SAT 솔버를 작성 중이며 DPLL 알고리즘을 구현하기 시작했습니다. 나는 알고리즘을 이해하고 그것이 어떻게 작동하는지, 나는 또한 그것의 변형을 구현했다. 그러나 나를 귀찮게하는 것은 다음 것이다. function DPLL(Φ)
if Φ is a consistent set of literals
then return true;
변수가 (a,b,c,d,e,f,g) 인 CNF 표현식이 있다고 가정합니다. SAT 해결사를 사용하여 (d,e,f)에 대한 할당을 찾으려면 어떻게해야합니까? {a,b,c,g} = {1,0,0,1}과 {a,b,c,g} = {1,1,1,1}이 주어 졌습니까? 하나의 가정이라면, {d,e,f}에 대한 과제를 찾기 위해 일일 해결사를 호출하는 것은 간단합니다 (예
기본 이론으로 정규 트리 문법을 사용하는 검증 작업을하고 있습니다. Z3을 사용하면 해석되지 않은 함수로 자신 만의 내용을 정의 할 수 있지만 의사 결정 절차가 재귀적일 때는 언제나 잘 작동하지 않습니다. 그들은 플러그인을 허용하는 데 사용했지만 그것은 depricated되었습니다, 제 생각에는. 내가 궁금한 점은, 사용자 정의 이론을위한 의사 결정 절차를
저는 python과 Sympy를 사용하고 있습니다. 다음 형식의 규칙이 있습니다. Or(x,And(y,z)). 불행히도 Sympy subs 및 xreplace 함수는 위의 규칙이 x = False, y = True 및 z = True에 만족하는지 확인하기위한 구현이 빠르지 않습니다. 이 표현식을 x, y, z가 주어진 다른 라이브러리로 효율적으로 변환하려면
Python과 Sympy를 사용하고 있습니다. x,y,z = Symbols('x,y,z')
doc = {x : False, y : True, z: True}
rule = Or(x, And(y,z))
내가 rule.eval(doc)에 True를 반환합니다 Sympy에서 함수를 찾고 있어요 : 나는 다음 있나요? 편집 : 현재 rule.subs과 rul
이 git repo에서 MaxHS SAT 솔버를 설정하려고합니다. - https://github.com/fbacchus/MaxHS입니다. '/ usr/bin/ld : -lcplex를 찾을 수 없습니다.'라는 오류 메시지가 나타납니다. 누구나 lcplex 라이브러리 란 무엇이며 어떻게 해결할 수 있습니까? 내 콘솔은 다음과 같습니다 .. install -d
C++ 라이브러리로 MiniSat을 사용할 때, 모든 새로운 변수는 결정 변수 또는 비 결정 변수로 생성 될 수 있습니다. 솔직히 분기 할 때 어떤 변수를 사용할 지 결정할 때 비 결정 변수는 고려되지 않습니다. 그러나 솔라가 SAT를 반환 할 때 공식이 실제로 UNSAT 임에도 불구하고 내 프로젝트에서 솔리드가 동등한 관계에있는 대신 결정되지 않은 변수가
스칼라로 작성된 응용 프로그램에서 일반적인 SAT 솔버를 호출해야합니다. jar 파일로 쉽게 임포트 할 수 있기 때문에 SAT4J를 조사했지만 실제로 사용하기가 어려웠습니다. 내 스칼라 코드 내에서 SAT 문제를 계산하기 위해 SAT4j jar 파일을 실행할 수있는 방법이 있습니까? SAT4J가 올바른 접근법이 아니라면 외부 SAT 해결사를 시작하는 대신