• 제목/요약/키워드: SAT problem

검색결과 39건 처리시간 0.034초

SAT 처리기를 위한 수도쿠 퍼즐의 최적화된 인코딩 (Optimized Encoding of Sudoku Puzzle for SAT Solvers)

  • 권기현
    • 한국정보과학회논문지:소프트웨어및응용
    • /
    • 제34권7호
    • /
    • pp.616-624
    • /
    • 2007
  • SAT을 이용해서 수도쿠 퍼즐을 풀기 위해서는 수도쿠를 SAT 처리기의 표준 입력 언어인 CNF 논리식으로 인코딩 해야 한다. 기존에 제시된 인코딩 알고리즘으로 크기가 큰 수도쿠를 인코딩하면 현재 SAT 처리기의 처리 수준을 넘을 정도로 많은 논리식이 생성된다. 본 논문에서는 크기가 큰 수도쿠를 다루기 위해서 수도쿠의 고정 셀을 이용하여 최적화된 CNF 논리식을 생성하는 방법을 제시한다. 고정 셀에 배정된 숫자는 불변이기 때문에 이를 이용해서 일부 변수의 값을 인코딩 단계에서 미리 결정할 수 있고, 이들 변수의 값을 이용해서 SAT 처리에 영향을 주지 않는 절과 리터럴을 인코딩 단계에서 제거할 수 있다. 다양한 크기의 수도쿠 퍼즐에 적용한 결과 기존 인코딩 알고리즘에 비해서 우수한 성능을 보였다.

최소 빈도수 문자 우선 선택 방법의 3-SAT 다항시간 알고리즘 (A 3-SAT Polynomial Time Algorithm Based on Minimum Frequency Literal-First Selection Method)

  • 이상운
    • 한국인터넷방송통신학회논문지
    • /
    • 제23권1호
    • /
    • pp.157-162
    • /
    • 2023
  • 본 논문은 NP-완전으로 알려진 3-SAT 문제에 대해 O(nm)의 다항시간 알고리즘을 제안하였다. 여기서 n은 3-SAT 수식 f에 포함된 문자수이며, m은 모든 문자의 총 발생 빈도수이다. 제안된 알고리즘은 우선순위롤 정하여 문자의 진리 값을 결정하였다. 하나의 절에 포함된 최소 문자의 수가 1개(k=1)인 문자, k≥2 이고 진리 값이 '0' 또는 '1'만 존재하는 문자, 발생 빈도수가 최소인 문자 우선순위로 진리 값을 결정하였다. 진리 값이 결정된 문자의 r인 절을 삭제하고, 남아 있는 절에서 해당 문자를 삭제하는 방법으로 식을 축소시킨다. 이 과정을 문자 수 l회를 수행하면 주어진 f의 충족 가능 여부를 결정할 수 있다. 이 방법을 적용한 결과 주어진 식 f의 충족 가능 여부를 판단할 수 있었으며, 모든 문자의 진리 값도 결정할 수 있었다. 제안된 알고리즘을 다양한 문제들에 적용한 결과 모든 문제들에서 충족가능 여부를 정확히 결정할 수 있었다. 결국, 제안된 알고리즘은 모든 SAT 문제를 선형시간으로 풀 수 있는 일반화된 알고리즘으로 확장 가능하며, 오랜 숙원이던 P vs. NP 문제를 풀 수 있는 기반을 제공하였다.

SAT를 기반으로 하는 플래그 변수가 있는 프로그램 테스팅을 위한 테스트 데이터 자동 생성 (Automated Test Data Generation for Testing Programs with Flag Variables Based on SAT)

  • 정인상
    • 정보처리학회논문지D
    • /
    • 제16D권3호
    • /
    • pp.371-380
    • /
    • 2009
  • 최근에 테스트 데이터를 자동으로 생성하는 방법에 관한 연구가 활발하게 진행되고 있다. 그러나 이러한 방법들은 플래그 변수가 프로그램에 존재하는 경우에는 효과적이지 못함이 밝혀졌다. 이는 엔진 제어기와 같은 내장형 시스템들이 전형적으로 디바이스 관련 상태 정보를 기록하기 위해 플래그 변수를 많이 이용한다는 점을 고려할 때 문제가 된다. 이 논문에서는 플래그 변수가 있는 프로그램에 대하여 효과적으로 테스트 데이터를 생성할 수 있는 방법을 소개한다. 이 방법은 테스트 데이터 생성 문제를 SAT(SATisfiability) 문제로 변환하고 SAT 해결도구를 이용하여 자동으로 테스트 데이터를 생성한다. 이를 위해 프로그램을 1차 관계 논리 언어인 Alloy로 변환하고 Alloy 분석기를 통하여 테스트 데이터를 생성한다.

최대-최대 빈도수 k-SAT 알고리즘 (k-SAT Problem Algorithm Based on Maximum-Maximum Frequency)

  • 이상운
    • 한국인터넷방송통신학회논문지
    • /
    • 제23권6호
    • /
    • pp.125-132
    • /
    • 2023
  • 본 논문은 NP-완전으로 알려진 k-SAT 문제의 절의 수 m에 대해 O(km)의 다항시간 알고리즘을 제안하였다. 기존에 널리 알려진 DPLL은 문자 수 𝑙에 대해 분기한정법의 전수탐색으로 해를 찾지 못하면 역추적을 수행하는 방식으로 최악의 경우 O(2𝑙)을 수행해야 한다. DPLL은 최소 빈도수 문자가 포함된 절을 참(T)으로 하도록 문자에 참(T) 또는 거짓(F)을 대입하여 해당 문자가 포함된 절을 제거하는 방식으로 SAT Solver의 근간을 이루고 있다. 제안된 알고리즘은 DPLL과는 반대로 부울 수식 f에 존재하는 최대 빈도수 문자 max𝑙을 선택하고, $_{\max}({\mid}l{\mid},{\mid}{\bar{l}}{\mid})=1$로 설정하고, 𝑙∈ci 절은 삭제하며, ${\bar{l}}{\in}c_i$절에서 ${\bar{l}}$를 삭제하는 방법을 적용하였다. 제안된 알고리즘을 다양한 k-SAT 문제들에 적용한 결과 기존의 DPLL 알고리즘보다 적은 횟수를 수행함을 알 수 있었다.

SAT에 기반한 포인터가 있는 프로그램을 위한 목적 지향 테스트 데이터 생성 (A Goal-oriented Test Data Generation for Programs with Pointers based on SAT)

  • 정인상
    • 인터넷정보학회논문지
    • /
    • 제9권2호
    • /
    • pp.89-105
    • /
    • 2008
  • 지금까지 테스트 데이터를 자동으로 생성하기 위한 대부분의 연구는 프로그램에 포인터가 존재하지 않는 경우만을 대상으로 하였다. 최근에 포인터가 있는 경우에도 테스트 데이터를 자동으로 생성할 수 있는 방법들이 제안되었지만 테스트할 프로그램 경로를 완전하게 명시해야 하는 경로 기반 방법이거나 프로그램을 실제 실행해야 하는 방법들이다. 이 논문에서는 프로그램 경로를 완전하게 명시하지 않아도 포인터가 있는 프로그램에 대하여 테스트 데이터를 생성할 수 있는 새로운 방법을 제안한다. 제안된 방법은 테스트 데이터 생성 문제를SAT(SATisfiability) 문제로 변환하고 SAT 해결도구를 이용하여 자동으로 테스트 데이터를 생성하는 정적 방법이다. 이를 위해 프로그램을 1차 관계 논리 언어인 Alloy로 변환하고 Alloy 분석기를 통하여 테스트 데이터를 생성한다.

  • PDF

DNF를 이용한 SAT의 효율적 적용 (Efficient Application to SAT Using DNF)

  • 남명진;최진영
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2003년도 봄 학술발표논문집 Vol.30 No.1 (A)
    • /
    • pp.881-883
    • /
    • 2003
  • 하드웨어 검증과 모델 체킹 등의 분야에서, SAT(satisfiability problem)나 항진 명제 검사(tautology checking)는 매우 중요한 문제이다. 그러나 이들은 모두 NP-complete 문제이므로 그 복잡도가 매우 크다. 이를 해결하기 위해 여러 가지 연구가 이루어져 왔으며, 여러 효율적인 알고리즘이 존재한다. 이러한 알고리즘은 대부분 일반 표현식을 CNF(conjunctive normal form)로 바꾸어 입력 형식으로 사용한다. 이 논문에서는 일반 표현식을 입력으로 받아 DNF로 변환한 뒤 DNF의 특성을 이용하여 SAT를 검사하는 효율적인 방법을 제시한다.

  • PDF

전달 루틴의 병렬화를 통한 SAT 알고리즘의 GPGPU 가속화 (GPGPU Acceleration of SAT Algorithm with Propagation Routine Parallelization)

  • 강형주
    • 한국정보통신학회논문지
    • /
    • 제20권10호
    • /
    • pp.1919-1926
    • /
    • 2016
  • 대량의 데이터를 병렬적으로 처리할 수 있는 General-Purpose Graphics Processing Unit(GPGPU)가 최근 많은 분야에서 적용되고 있으며, 이는 전자 설계 자동화 분야에서도 예외가 아니다. SAT 알고리즘은 다양한 전자 설계 자동화 문제에 적용되는 대표적인 알고리즘 중 하나이다. GPGPU를 이용해서 SAT 알고리즘을 가속화하기 위해 노력이 이루어져 왔으나, SAT 알고리즘 자체의 특성으로 인해 병렬화에 어려움이 있어왔다. 이 논문에서는 SAT 알고리즘의 내부 과정 중 비교적 병렬화가 용이한 전달 루틴을 병렬화함으로써 GPGPU 가속화를 적용하였다. 전달 루틴이 희소 행렬의 곱셈과 유사한 점에 착안하여 데이터 구조를 구성하고 이에 맞추어서 병렬적인 전달 루틴을 작성하였다. 병렬적으로 동작하는 쓰레드들 사이의 데이터 손실을 방지하기 위해 아토믹(atomic) 연산을 이용하였다. 벤치마크 SAT 문제들에 대해 기존의 GPGPU 기반 SAT solver에 비해 성능이 10배 이상 향상되었음을 확인하였다.

Modeling Pairwise Test Generation from Cause-Effect Graphs as a Boolean Satisfiability Problem

  • Chung, Insang
    • International Journal of Contents
    • /
    • 제10권3호
    • /
    • pp.41-46
    • /
    • 2014
  • A cause-effect graph considers only the desired external behavior of a system by identifying input-output parameter relationships in the specification. When testing a software system with cause-effect graphs, it is important to derive a moderate number of tests while avoiding loss in fault detection ability. Pairwise testing is known to be effective in determining errors while considering only a small portion of the input space. In this paper, we present a new testing technique that generates pairwise tests from a cause-effect graph. We use a Boolean Satisbiability (SAT) solver to generate pairwise tests from a cause-effect graph. The Alloy language is used for encoding the cause-effect graphs and its SAT solver is applied to generate the pairwise tests. Using a SAT solver allows us to effectively manage constraints over the input parameters and facilitates the generation of pairwise tests, even in the situations where other techniques fail to satisfy full pairwise coverage.

카운팅 문제에 대한 SAT, PB, SMT의 성능 분석 (Performance Analysis on SAT, PB and SMT for Counting Problems)

  • 박호진;박사천;권기현
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2008년도 춘계학술발표대회
    • /
    • pp.371-374
    • /
    • 2008
  • n개의 이진 변수 집합 중에 k개를 선택하는 카운팅 문제(Counting Problem)들은 여러 방법으로 풀이가 가능하다. 본 논문에서는 카운팅 문제를 풀기 위해 SAT, PB, SMT를 소개하고, 칸 칠하기(Fill-a-Pix) 퍼즐을 예로 들어 카운팅 문제의 인코딩 방법을 제시하고 처리 결과를 비교해 보았다. SAT이 상대적으로 인코딩은 가장 복잡했으나, 처리 시 가장 우수한 성능을 보였다. 따라서 본 논문은 카운팅 문제를 다룰 때에는 SAT이 가장 적합하다는 것을 제안한다.

SAT Preprocessor의 구현 및 실험 (Implementation and Experiments of SAT preprocessor)

  • 남명진;최진영;곽희환
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2003년도 가을 학술발표논문집 Vol.30 No.2 (1)
    • /
    • pp.517-519
    • /
    • 2003
  • 하드웨어 검증과 모델 체킹 등의 분야에서, SAT(satisfiability problem)나 항진 명제 검사(tautology checking)는 매우 중요한 문제이다. 그러나 이들은 모두 NP-complete 문제이므로 그 복잡도가 매우 크다. 이를 해결하기 위한 여러 연구가 진행되고 있고, 그 결과 성능이 좋은 solver들이 개발되었다. 하지만 문제가 커질수록 solver의 처리 시간이 급격하게 증가한다. 이 논문에서는 solver가 복잡한 문제를 더 효율적으로 풀기 위해 논문“Local search for Boolean relations on the basis of unit propagation”[5]에서 제안된 preprocessor(전처리기), P_EQ의 개념을 설명하고, 실험을 통한 결과를 제시한다.

  • PDF