资源简介
针对逻辑可满足的求解算法walksat的算法c语言实现。包括了CNF范式的文件。
代码片段和文件信息
#include
#include
int n;
int generate(int p)
{
int ijk;
int c;
c =0;
/* queen on every row */
for (j=1; j<=n; j++){
for (i=1; i<=n; i++){
if (p) printf(“%i “ n*(j-1)+i);
}
c++; if (p) printf(“ 0\n“);
}
/* no horizontal attacks */
for (j=1; j<=n; j++){
for (i=1; i for (k=i+1; k<=n; k++){
c++; if (p) printf(“-%i -%i 0\n“ n*(j-1)+i n*(j-1)+k);
}
}
}
/* no vertical attacks */
for (i=1; i<=n; i++){
for (j=1; j for (k=j+1; k<=n; k++){
c++; if (p) printf(“-%i -%i 0\n“ n*(j-1)+i n*(k-1)+i);
}
}
}
/* no SE attacks */
for (i=1; i for (j=1; j for (k=1; (i+k)<=n && (j+k)<=n; k++){
c++; if (p) printf(“-%i -%i 0\n“ n*(j-1)+i n*(j-1+k)+i+k);
}
}
}
/* no SW attacks */
for (i=2; i<=n; i++){
for (j=1; j for (k=1; (i-k)>=1 && (j+k)<=n; k++){
c++; if (p) printf(“-%i -%i 0\n“ n*(j-1)+i n*(j-1+k)+i-k);
}
}
}
return c;
}
int main(int argc char ** argv)
{
if (argc < 2) return(1);
n = atoi(argv[1]);
printf(“p cnf %i %i\n“ n*n generate(0));
generate(1);
return(0);
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2011-03-21 16:59 Walksat_v48\
文件 4935 2011-03-21 16:55 Walksat_v48\f100.cnf
文件 726865 2011-03-21 16:55 Walksat_v48\f10k.cnf
文件 17333 2011-03-21 16:55 Walksat_v48\f300.cnf
文件 31976 2011-03-21 16:55 Walksat_v48\f500.cnf
文件 31267 2011-03-21 16:55 Walksat_v48\f500u.cnf
文件 417 2011-03-21 16:55 Walksat_v48\Makefile
文件 1401 2011-03-21 16:55 Walksat_v48\makequeens.c
文件 4126 2011-03-21 16:55 Walksat_v48\makewff.c
文件 22766192 2011-03-21 16:55 Walksat_v48\q100.cnf
文件 4046 2011-03-21 16:55 Walksat_v48\README
文件 1380 2011-03-21 16:55 Walksat_v48\resolve_trace
文件 54668 2011-03-21 16:58 Walksat_v48\walksat.c
- 上一篇:2D格斗游戏,C语言实现
- 下一篇:C/S架构的C++实现
评论
共有 条评论