로어유닛
LowerUnits이 기사는 대체로 또는 전적으로 단일 출처에 의존한다.– · · 책· · (2014년 4월) |
이 글은 대부분의 독자들이 이해하기에는 너무 기술적인 것일 수도 있다. 정보를 할 수 하십시오. (2014년 4월 (이를 및 |
증명 압축에서 LowerUnits(LowerUnits)는 명제 논리 분해능 증명 압축에 사용되는 알고리즘이다.LowerUnits의 주요 아이디어는 다음과 같은 사실을 이용하는 것이다.[1]
정리: 을(를) 잠재적으로 중복되는 증명이 되도록 하고, 을(를) 중복되는 증명이 되도록 한다.의s 절이 단위 절이면 은(는) 중복된다.
알고리즘은 단위 절이 있는 복수 분해능에서 기인하는 전역 중복성 등급을 정확히 대상으로 한다.알고리즘은 이 재작성이 완료되고 그 결과 입증 자료가 DAG(직접적인 애시클릭 그래프)로 표시될 때 단위 노드 이(가) 원래 증명에 나타나던 것보다 더 낮게(즉, 루트에 더 가깝게) 나타난다는 사실에서 그 이름을 따온 것이다.
정리를 이용하는 순진한 구현은 각 단위 노드를 낮춘 후에 증거를 통과하고 수정해야 할 것이다.그러나 한 번의 트래버설에서 먼저 모든 장치 노드를 수집하고 제거한 다음, 한 번의 트레버설로 전체 증거를 고정함으로써 더 나은 작업을 할 수 있다.마지막으로 수집된 고정 장치 노드는 증빙 하단에 다시 삽입해야 한다.
Care must be taken with cases when a unit node occurs above in the subproof that derives another unit node . In such cases, depends on . Let be the single liter의 단위 절의 al 그러면 위에 있는 방호벽에 있는 의 어떠한 발생도 η에의한 해결 추론으로도 취소되지 않을 것이다.이에 따라 은(는) 증빙이 고정되면 아래쪽으로 되어 의 절에 나타나게 된다.을 다시 삽입한 후 상위 단위 노드 을 다시 삽입하면 이러한 의존성을 가진 어려움을 쉽게 피할 수 있다.nit 노드 }(즉, 다시 삽입한 {\^{\ 아래에 나타나야 의 추가 리터럴터럴터럴트럴을 취소할 수 있다.이는 증빙의 상향 이동 중에 대기열에 장치 노드를 수집하고 대기열에 있는 순서대로 다시 삽입함으로써 보장할 수 있다.
많은 루트가 포함된 증거를 수정하기 위한 알고리즘은 증명의 하향 횡단을 수행하고, 생존 부모(예: 다른 부모)에 의해 분해제를 다시 계산하고 손상된 노드(예: 부모 중 하나로서 노드 삭제)를 대체한다.
단위 노드를 수집하여 조항 의 증빙에서 제거하고 그 증빙이 고정되면, 새로운 증빙의 루트 노드에 있는 κ 조항은 더 이상 some 과 같지 않지만 (일부) 단위 절의 리터럴이 포함되어 있다.증거에서 삭제되었다.증명 하단에 있는 단위 노드를 다시 삽입하면 수집된 단위 노드 중 (일부)의 조항으로 이(가) 해결되어 의 증거를 다시 얻는다.
알고리즘.
알고리즘의 일반 구조
알고리즘 LowerUnits 입력: 증명 출력: 중복 노드가 있는 글로벌 이중화가 없는 증거
(unitsQueue, ) ← collectUnits(); ← fix(); fixedUnitsQueue ← fix(unitsQueue); ← reinsertUnits(,FixedUnitsQueue); 반환 {\^{\;
- "직접"은 할당을 의미한다.예를 들어, "가장 큰 ←항목"은 가장 큰 값이 항목의 가치를 변화시킨다는 것을 의미한다.
- "return"은 알고리즘을 종료하고 다음 값을 출력한다.
다음과 같이 단위 조항을 수집한다.
알고리즘 수집유닛 입력: : 출력: 에서 두 번 이상 사용되는 모든 장치 노드(unitsQueue)의 대기열과 파손된 증빙 b 이(가) 포함된 쌍.
← ; traverse bottom-up and foreach node in do if is unit and has more than one child then 을(를) 장치에 추가대기열; 엔드 엔드 리턴(unitsQueue,
- "직접"은 할당을 의미한다.예를 들어, "가장 큰 ←항목"은 가장 큰 값이 항목의 가치를 변화시킨다는 것을 의미한다.
- "return"은 알고리즘을 종료하고 다음 값을 출력한다.
그런 다음 유닛을 다시 삽입한다.
알고리즘 재퍼트유닛 입력: 단일 루트로) 및 루트 노드의 대기열 출력:증명서 }}}
← ; while do ← first element of ; ← tail of ; if is resolva 을(를) 뿌리로 표백한 다음 을를 뿌리째 뽑은 후{\\ \을(를로 하여 discla stypres)을(으)을(으)로 한다.
- "직접"은 할당을 의미한다.예를 들어, "가장 큰 ←항목"은 가장 큰 값이 항목의 가치를 변화시킨다는 것을 의미한다.
- "return"은 알고리즘을 종료하고 다음 값을 출력한다.
메모들
- ^ 퐁텐, 파스칼, 메르스, 스테판, 울첸로겔 팔레오, 브루노.부분적 정규화를 통한 제안 결의안 증명 압축. 제23회 자동 공제 국제 회의, 2011.