Re: [情報] SAT 之使用

看板EE_DSnP作者 (邪心魔佛)時間12年前 (2012/01/17 11:14), 編輯推噓3(309)
留言12則, 2人參與, 最新討論串2/3 (看更多)
※ 引述《ric2k1 (Ric)》之銘言: : 雖然講義裏頭應該是說明得很清楚了,但我還是翻成中文來跟大家說明一下, : 其實是很簡單用的... : 1. Create 一個 SatSolver 的 object, 並且呼叫 initialize(). : 2. 在證明任何 FEC pair 之前,請先建立整個 circuit 的 SAT model, : 也就是說: (1) 每個 gate (含 PIs) 要對應到一個 SAT Var (solver.newVar()), : (2) 呼叫 solver.addAigCNF() 去建立每個 AIG gate 對應的 CNF, : 這些 CNF clauses 會存在 solver 中。 : 3. 針對某個要證明的 FEC pair "F == XOR(f, g)", (<= 要給 F 一個新的 SAT Var) 請問要給一個新的變數是什麼意思 是每次模擬就要給一個新變數嗎 i.e 每次都要重新Var F=s.newVar(); : 呼叫 solver.addXorCNF() 去建立對應的 CNF clauses. : 4. 呼叫 "solver.assumeProperty(F_var)" 以及 solver.assumpSolve() : 來看看 F == XOR(f, g) 是否可以 satisfied. : 5. 如果 UNSAT (solve() return false), 則 f alywas = g, => 可以merge. : 如果 SAT (solver() return true), 則可以根據 circuit 的 PIs 所對應的 : SAT vars 去抓到 SAT assignment (呼叫 getValue()), : 然後等一下可以利用這些 assignment (pattern) 去 simulate. : 6. 下次要再證明別的 pair 時只要把 assumption release, : 再重複 3 ~ 5 就可以了! 不用重建電路的 proof model. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.228.34.151 ※ 編輯: photonzero 來自: 61.228.34.151 (01/17 11:15)

01/17 11:38, , 1F
SAT 跟模擬沒有關係吧!?
01/17 11:38, 1F

01/17 11:50, , 2F
這李的模擬是指看是否有解能satisfy
01/17 11:50, 2F

01/17 11:54, , 3F
應該是說每一次要證明新的 pair 都要產生新的 SAT var
01/17 11:54, 3F

01/17 11:55, , 4F
那可以把原本的給delete掉嗎?
01/17 11:55, 4F

01/17 12:05, , 5F
要 delete 原本的變數不容易,要改 sat 的 code...
01/17 12:05, 5F

01/17 12:05, , 6F
建議不要
01/17 12:05, 6F

01/17 12:16, , 7F
我試過直接在XORCNF內加上^(上次結果),但會有記憶體錯
01/17 12:16, 7F

01/17 12:17, , 8F
而且錯誤發生在SAT內= =,為什麼直接在true false動手
01/17 12:17, 8F

01/17 12:17, , 9F
不行勒QQ
01/17 12:17, 9F

01/17 13:15, , 10F
教授我在最外面宣告一個Var就可以跑,但在裡面就會當掉
01/17 13:15, 10F

01/17 13:16, , 11F
而且當掉點都在SAT內,可以請問是為什麼嗎,而且我FEC
01/17 13:16, 11F

01/17 13:17, , 12F
內部有照dfs順序
01/17 13:17, 12F
文章代碼(AID): #1F5ETxan (EE_DSnP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):
文章代碼(AID): #1F5ETxan (EE_DSnP)