完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大家来讨论一下这样一个简单的局部搜索算法,在FPGA中实现如何在最短的时间内获得解?
WSAT(F,MAX-TRIES , MAX-FLIPS) { for (i = 0; i < MAX-TRIES; i++) { T = randomly generated truth assignment; for (j = 0; j < MAX-FLIPS; j++) { if T satisfies F return T; c = an unsatisfied clause selected at random; v = a variable in c chosen by the Heuristic(c); T = T with v flipped; } } } 简单说明一下F为CNF公式,如F(x1,x2,x3)=C1∧C2∧C3∧C4=(¬x1 ∨ x2) ∧ (¬x2 ∨¬x3) ∧ (x1 ∨¬x2 ∨ x3) ∧ (x1 ∨¬x3),MAX-TRIES为给公式赋初值的次数,MAX-FLIPS为赋值T不满足F的情况下,翻转变量最大次数。以上算法过程是这样的: 1.给定F和一组随机初值,如{x1,x2,x3}={1,1,1},可知C2=0,因此F=0. 2.选择C2,随机或利用启发式选择某一变量进行取反,假设选择X2,即{x1,x2,x3}={1,0,1},可知C2=1,但是C1=0,以此F=0,继续翻转变量。 3选择C1,随机或利用启发式选择某一变量进行取反,假设选择X1,即{x1,x2,x3}={0,0,1},可知C1=1,但是C4=0,以此F=0,继续翻转变量。 当尝试MAX-FLIPS次后任然没有找到一组赋值使F=1,则跳出此循环,重新赋一组初值继续上面循环,直到找到F=1的一组赋值。 不知道我是否表达清楚,有兴趣的兄弟可以一起探讨一下。F中可以有N个子句C,每个C最多包含三个X。 |
|
相关推荐
1 个讨论
|
|
你正在撰写讨论
如果你是对讨论或其他讨论精选点评或询问,请使用“评论”功能。
双目视觉处理系统开发实例-基于米尔安路国产DR1M90开发板
1503 浏览 0 评论
1682 浏览 0 评论
基本FPGA或者树莓派或者其它微处理器(尽量压缩成本且完成项目)DFB激光器稳频
2218 浏览 1 评论
3314 浏览 1 评论
助力AIoT应用:在米尔FPGA开发板上实现Tiny YOLO V4
1339 浏览 0 评论
2508 浏览 58 评论
6307 浏览 113 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-3-4 21:13 , Processed in 0.941455 second(s), Total 45, Slave 35 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191