숫자가 포함 된 .cnf 파일에 Conjunctive Normal Form이 있습니다.Java에서 .cnf 파일을 읽는 방법
색인으로 작업 할 수 있도록 데이터 구조 (행렬 또는 목록)에 읽고 저장해야합니다. (3-SAT 문제를 해결하려면이 코드가 필요합니다.)
어떻게하면 Java로 읽고 저장할 수 있습니까? 새들 - 뷰 관점에서
c This Formular is generated by mcnf
c
c horn? no
c forced? no
c mixed sat? no
c clause length = 3
c
p cnf 20 91
10 -3 16 0
-8 20 -19 0
2 -6 -20 0
-7 9 3 0
3 15 -14 0
4 15 20 0
11 -9 -6 0
3 -17 19 0
11 5 -12 0
10 3 -15 0
2 15 18 0
-15 12 11 0
18 -19 -8 0
13 20 9 0
11 -10 -14 0
4 18 -9 0
-7 -17 5 0
-7 11 -15 0
6 2 20 0
16 -18 -17 0
4 -13 -20 0
11 17 -8 0
13 -11 -9 0
-11 13 19 0
12 -19 14 0
10 -1 -20 0
19 -20 13 0
13 2 11 0
17 19 -18 0
19 -20 -10 0
-18 16 15 0
-18 7 -20 0
1 -14 -17 0
1 -11 -18 0
-18 8 13 0
-8 4 16 0
-10 1 13 0
9 3 -20 0
-13 4 8 0
17 -11 18 0
18 20 2 0
-20 -1 4 0
-19 2 -9 0
-9 -16 -15 0
-2 12 9 0
5 19 6 0
-8 -5 -13 0
-18 20 -6 0
5 -18 12 0
2 5 19 0
-5 -8 -11 0
-20 -17 11 0
-18 -14 -16 0
-3 -18 -7 0
-11 20 17 0
-1 -15 -13 0
9 -5 11 0
-17 -7 -1 0
-6 -1 -16 0
-3 -15 -19 0
17 14 11 0
-17 12 13 0
16 12 -2 0
14 10 -16 0
8 -4 5 0
-5 16 17 0
-18 -1 -15 0
11 -15 -13 0
16 -9 -7 0
-8 -15 2 0
-19 -10 1 0
12 -15 -20 0
13 -10 9 0
17 7 18 0
20 15 -2 0
-6 -7 -1 0
14 11 15 0
18 13 -9 0
-4 -12 -2 0
-13 -5 -9 0
5 13 16 0
20 -14 -15 0
19 -20 18 0
19 -17 13 0
3 19 14 0
6 3 20 0
-8 -20 -2 0
12 -10 -19 0
-2 -5 -8 0
13 -4 -11 0
-5 -10 19 0
%
0
검색 엔진에 "Java DIMACS"를 요청하면 [this one] (http://kahina.org/trac/browser/trunk/src/org/kahina/logic/sat/io/) 조회수가 발생합니다. cnf/DimacsCnfParser.java). CNF에 대한 DIMACS 형식을 숙지하십시오. 각 절 줄은 0으로 끝나는 리터럴 목록입니다. 부정 된 리터럴은 음수로 인코딩됩니다. p 행은 변수와 절의 수를 지정합니다. –
@AxelKemper 나는 그 Dimacs 용어를 몰랐다, 대단히 감사합니다! – PEN
@AxelKemper는 Kahina 소스에 감사드립니다. DIMACS에 대한 Google 검색을 수행했을 때보다 나은 구문 분석기를 찾을 수 없었습니다. 하지만 그 코드를 구현할 수 없다는 것, 너무 커서, 클래스/패키지가 밀접하게 결합되어 있다고 생각합니다! : – PEN