welcome: please sign in

Cerca

Link Dipartimentali

Link Esterni

Allegato "qip.pl"

Scarica

   1 #!/usr/bin/env perl
   2 
   3 $m=shift;
   4 $n=shift;
   5 
   6 $m > 0 and $n > 0 or die "Usage: $0 m n\n";
   7 @formula=();
   8 
   9 # So: xi,j,k ~ (k-1)*n*n + (j-1)*n+i
  10 
  11 for($k=1; $k <= $m; $k++) {
  12   @clause=();
  13   for($i=1; $i <= $n; $i++) {
  14     for($j=1; $j <= $n; $j++) {
  15       push(@clause, ($k-1)*$n*$n + ($j-1)*$n+$i);
  16     }
  17   }
  18   push(@formula,join(" ",@clause) . " 0");
  19 }
  20 
  21 
  22 for($i=1; $i <= $n; $i++) {
  23   for($j=1; $j <= $n; $j++) {
  24     for($k=1; $k <= $m; $k++) { 
  25       for($l=1; $l <= $m; $l++) { 
  26         if($k != $l) {
  27           push(@formula,sprintf("-%d -%d 0",
  28                  ($k-1)*$n*$n + ($j-1)*$n+$i ,
  29                  ($l-1)*$n*$n + ($j-1)*$n+$i));
  30         }
  31       }
  32     }
  33   }
  34 }
  35 
  36 for($i=1; $i <= $n; $i++) {      
  37   for($j=1; $j <= $n; $j++) {    
  38     for($k=1; $k <= $m; $k++) {
  39       for($l=1; $l <= $n; $l++) {  
  40         for($h=1; $h <= $n; $h++) {  
  41           if(!($l==$i && $h==$j)) {
  42             push(@formula,sprintf("-%d -%d 0", 
  43                  ($k-1)*$n*$n + ($j-1)*$n+$i , 
  44                  ($k-1)*$n*$n + ($h-1)*$n+$l));
  45           }
  46         }
  47       }
  48     }
  49   }
  50 }
  51 
  52 for($i=1; $i <= $n; $i++) {
  53   for($j=1; $j <= $n; $j++) {
  54     for($k=1; $k <= $m; $k++) {
  55       for($l=1; $l <= $n; $l++) {
  56         for($h=1; $h <= $m; $h++) {
  57           if(!($l==$i && $h==$k)) {
  58             push(@formula,sprintf("-%d -%d 0", 
  59                  ($k-1)*$n*$n + ($j-1)*$n+$i , 
  60                  ($h-1)*$n*$n + ($j-1)*$n+$l));
  61           }
  62         }
  63       }
  64     }
  65   }
  66 }
  67 
  68 for($i=1; $i <= $n; $i++) {
  69   for($j=1; $j <= $n; $j++) {
  70     for($k=1; $k <= $m; $k++) {
  71       for($l=1; $l <= $n; $l++) {
  72         for($h=1; $h <= $m; $h++) {
  73           if(!($l==$j && $h==$k)) {
  74             push(@formula,sprintf("-%d -%d 0",
  75                  ($k-1)*$n*$n + ($j-1)*$n+$i ,
  76                  ($h-1)*$n*$n + ($l-1)*$n+$i));
  77           }                  
  78         }
  79       }
  80     }
  81   }
  82 }
  83 
  84 for($i=1; $i <= $n; $i++) {
  85   for($j=1; $j <= $n; $j++) {
  86     for($k=1; $k <= $m; $k++) {
  87       $diff=$i - $j;
  88       for($l=1; $l <= $n; $l++) {
  89         $ll = $l - $diff;
  90         if( $ll > 0 && $ll <= $n ) {
  91           for($h=1; $h <= $m; $h++) {
  92             if(!($l==$i && $ll==$j)) {
  93               push(@formula,sprintf("-%d -%d 0",
  94                  ($k-1)*$n*$n + ($j-1)*$n+$i ,
  95                  ($h-1)*$n*$n + ($ll-1)*$n+$l));
  96             }
  97           }
  98         }
  99       }
 100     }
 101   }
 102 }
 103 
 104 for($i=1; $i <= $n; $i++) {
 105   for($j=1; $j <= $n; $j++) {
 106     for($k=1; $k <= $m; $k++) {
 107       $sum=$i + $j;
 108       for($l=1; $l <= $n; $l++) {
 109         $ll = $sum - $l;
 110         if( $ll > 0 && $ll <= $n ) {
 111           for($h=1; $h <= $m; $h++) {
 112             if(!($l==$i && $ll==$j)) {
 113               push(@formula,sprintf("-%d -%d 0",
 114                  ($k-1)*$n*$n + ($j-1)*$n+$i ,
 115                  ($h-1)*$n*$n + ($ll-1)*$n+$l));
 116             }
 117           }
 118         }
 119       }
 120     }
 121   }
 122 }
 123 
 124 
 125 printf("p cnf %d %d\n",$m*$n*$n,$#formula+1);
 126 foreach (@formula)
 127   {
 128   print "$_\n";
 129   }

Allegati

Non รจ consentito inserire allegati su questa pagina.