Skip to main content
Log in

Factorization of Boolean Polynomials: Parallel Algorithms and Experimental Evaluation

  • Published:
Programming and Computer Software Aims and scope Submit manuscript

Abstract

Polynomial factorization is a classical algorithmic algebra problem with a wide range of applications. Of particular interest is factorization over finite fields, among which fields of order two are probably the most important ones when representing Boolean functions by Zhegalkin polynomials. In particular, factorization of Boolean polynomials corresponds to conjunctive decomposition of Boolean functions given in algebraic normal form. In addition, factorization enables decomposition of functions given in full disjunctive normal form (DNF) and positive DNF, as well as Cartesian decomposition of relational data. These applications demonstrate the importance of developing fast factorization algorithms. In this paper, we consider some recently proposed factorization algorithms of polynomial complexity and describe a parallel MIMD implementation that takes advantage of both task-level and data-level parallelism. We conduct some experiments on logic synthesis benchmarks and synthetic (random) polynomials to demonstrate significant factorization speedup. In conclusion, we discuss results of testing a parallel implementation of the algorithm on a massively parallel multicore architecture (REDEFINE).

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1.
Fig. 2.
Fig. 3.
Fig. 4.

Similar content being viewed by others

REFERENCES

  1. von zur Gathen, J. and Gerhard, J., Modern Computer Algebra, Cambridge University Press, 2013, 3rd ed.

    Book  Google Scholar 

  2. Zhegalkin, I.I., Arithmetization of symbolic logic, Mat. Sb., 1928, vol. 35, no. 1, pp. 311–377.

    Google Scholar 

  3. Muller, D.E., Application of Boolean algebra to switching circuit design and to error detection, IRE Trans. Electron. Comput., 1954, vol. EC-3, pp. 6–12.

    Google Scholar 

  4. Emelyanov, P.G. and Ponomaryov, D.K., Algorithmic issues of AND-decomposition of Boolean formulas, Program. Comput. Software, 2015, vol. 41, pp. 162–169.

    Article  MathSciNet  Google Scholar 

  5. Emelyanov, P. and Ponomaryov, D., On tractability of disjoint AND-decomposition of Boolean formulas, Lect. Notes Comput. Sci., 2015, vol. 8974, pp. 92–101.

    Article  MathSciNet  Google Scholar 

  6. Emelyanov, P., On two kinds of dataset decomposition, Lect. Notes Comput. Sci., 2018, vol. 10861, pp. 171–183.

    Article  MathSciNet  Google Scholar 

  7. Emelyanov, P. and Ponomaryov, D., Cartesian decomposition in data analysis, Proc. Siberian Symp. Data Science and Engineering (SSDSE), 2017, pp. 55–60.

  8. Shpilka, A. and Volkovich, I., On the relation between polynomial identity testing and finding variable disjoint factors, Lect. Notes Comput. Sci., 2010, vol. 6198, pp. 408–419.

    Article  MathSciNet  Google Scholar 

  9. Emelyanov, P. and Ponomaryov, D., On a polytime factorization algorithm for multilinear polynomials over F 2, Lect. Notes Comput. Sci., 2018, vol. 11077, pp. 164–176.

    Article  MathSciNet  Google Scholar 

  10. Somenzi, F., CUDD: CU decision diagram package. https://github.com/ivmai/cudd. Accessed December 11, 2019.

  11. Corno, F., Reorda, M.S., and Squillero, G., RT-level ITC'99 benchmarks and first ATPG results, IEEE Des. Test Comput., 2000, vol. 17, no. 3, pp. 44–53.

    Article  Google Scholar 

  12. Hansen, M.C., Yalcin, H., and Hayes, J.P., Unveiling the ISCAS-85 benchmarks: A case study in reverse engineering, IEEE Des. Test Comput., 1999, vol. 16, no. 3, pp. 72–80.

    Article  Google Scholar 

  13. Fišer, P. and Schmidt, J., A prudent approach to benchmark collection, Proc. 12th Int. Workshop Boolean Problems (IWSBP), 2016, pp. 129–136.

  14. Redefine: Reconfigurable silicon core description. http://morphing.in/redefine. Accessed December 7, 2018.

  15. Ponomaryov, D., A polynomial time delta-decomposition algorithm for positive DNFs, Lect. Notes Comput. Sci., 2019, vol. 11532, pp. 325–336.

    Article  MathSciNet  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding authors

Correspondence to P. G. Emelyanov, M. Krishna, V. Kulkarni, S. K. Nandy, D. K. Ponomaryov or S. Raha.

Additional information

Translated by Yu. Kornienko

APPENDIX

APPENDIX

Snippet of decomposition algorithm using Hyperops

__hyperOp__ void

decomp (__CMAddr selfId ,

       __Op32 a , __Op32 b ,

       __Op32 p_s ,__Op32 p_o ,

       __Op32 m, __Op32 n ,

       __Op32 i , __Op32 consumFrId )

{

 int *A=a.ptr ;

 int *B=b.ptr ;

 int * partition_same =p_s.ptr ;

 int * partition_o the r=p_o.ptr ;

 int I=i.i32;

 int n=n.i32;

 int m=m.i32;

 int J=0;

 int *C, *D;

  __CMAddr c onf r Id=consumFrId.cmAddr ;

 for ( I=0; I<n ; I++) {

   *( partition_same+J )=0;

   *( partition_o the r+J )=0;

 }

 for ( I=0; I<m; I++) {

   for ( J=0; J<n ; J++) {

     *(C+I * columns+J )=0;

     *(D+I * columns+J )=0;

   }

 }

 derivative (A,B,C, i ) ;

 derviative (A,B,D, i ) ;

 if ( I sEqual (A,D,B,C) )

    *( partition_o the r+i ) =1;

 else

   *( partition_same+i ) =1;

 __Sync( confrId , =1);

}

__kernel int

decomp_start ( int *A, int *B,

                   int * partition_same ,

                   int * partition_othe r ,

                   int N)

{

  int i =0;

  static int counter=0;

  __CMAddr decompFr ;

  __CMAddr syncFr=__CreateInst(&smd_Sync ) ;

  __WriteCM(CMADDR( syncFr , 1 5 ) ,N=1);

 for ( i = 1 ; i<N; i++) {

   decompFr=__CreateInst(&smd_decomp ) ;

   __WriteCM(CMADDR( decompFr , 0 ) ,

             ( void * ) (A) ) ;

   __WriteCM(CMADDR( decompFr , 1 ) ,

             ( void * ) (B) ) ;

   __WriteCM(CMADDR( decompFr , 2 ) ,

             ( void * ) ( partition_same ) ) ;

   __WriteCM(CMADDR( decompFr , 3 ) ,

             ( void * ) ( partition_o the r ) ) ;

   __WriteCM(CMADDR( decompFr , 4 ) , M) ;

   __WriteCM(CMADDR( decompFr , 5 ) , N) ;

   __WriteCM(CMADDR( decompFr , 6 ) , i ) ;

   __WriteCM(CMADDR( decompFr , 7 ) ,

CMADDR( syncFr , 1 5 ) ) ;

 }

 return 0 ;

}

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Emelyanov, P.G., Krishna, M., Kulkarni, V. et al. Factorization of Boolean Polynomials: Parallel Algorithms and Experimental Evaluation. Program Comput Soft 47, 108–118 (2021). https://doi.org/10.1134/S0361768821020043

Download citation

  • Received:

  • Revised:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1134/S0361768821020043

Navigation