추상적 해석은 매우 일반적인 개념이며, 요청한 사람에 따라 다양한 개념이 여러 관점을 허용하기 때문에 다른 설명을 받게됩니다. 이 답변의 견해는 내 것이므로 일반적인 것이라고 생각하지는 않습니다.
동기 부여로서 전산 경도
솔루션이 다음과 같은 구조를 갖는 의사 결정 문제부터 시작하겠습니다.
종종 절차에 NP-hard 하한이 있습니다. 프로그램의 시맨틱 속성을 확인하는 것은 결정 불가능합니다. 우리는 무엇을 할 수 있습니까?
두 가지 관찰을하겠습니다. 첫째, 일반적인 문제를 해결할 수없는 경우에도 특정 문제 인스턴스를 해결할 수 있습니다. 둘째, 컴파일러 최적화와 같은 애플리케이션은 일부 비 효율성 소스를 제거하는 컴파일러가 유용하다는 점에서 근사치를 허용합니다. 이 직관을 정확하게하려면 다음과 같이 대답해야합니다.
- 모든 문제가 아닌 일부 문제를 공식적으로 해결한다는 것은 무엇을 의미합니까?
- 의사 결정 문제에 대한 대략적인 해결책은 무엇입니까?
추상 해석 아이디어 1 : 문제 설명 변경
나에게 추상적 해석의 주요 통찰력은 문제 구성을 변경하여 예 / 아니오 답변 을 요청하는 대신 예 / 아니오 / 아마도 답변을 요청하는 것입니다.
결과적으로 모든 문제에는 사소하고 일정한 시간 솔루션 (출력 Maybe )이 있습니다. 우리는 이제 Maybe를 항상 생성하지는 않는 절차를 도출하기 위해주의를 옮길 수 있습니다 . 위의 질문으로 돌아 가기 위해 일부 문제 인스턴스에 적합한 솔루션은 해결할 수없는 문제에 대해 아마도 반환하는 솔루션입니다 . 또한 아마도 대답이 무엇인지 확실하지 않기 때문에 아마도 예 와 아니오 의 근사치 일 것입니다.
이 아이디어는 의사 결정 문제에만 국한되지 않습니다. 프로그램과 관련된 이러한 문제를 고려하십시오.
- 프로그램에서 어떤 코드 줄이 죽었습니까 (실행되지 않을 것입니까)?
- 프로그램에서 어떤 변수가 일정한 값을 가지고 있습니까?
- 프로그램의 어떤 주장이 위반됩니까?
이러한 모든 상황에서 불확실성이있는 솔루션을 고려하여 정확한 솔루션에서 대략적인 솔루션으로 이동할 수 있습니다.
- 무엇 세트 죽은 줄의 코드는?
- 프로그램에서 일정한 값을 갖는 변수 세트 는 무엇입니까 ?
- 프로그램에서 위반되지 않은 일련 의 어설 션 은 무엇입니까 ?
생산 된 세트가 가장 클 필요는 없습니다. 이 아이디어는 매우 일반적이며 프로그램 분석과 관련이없는 문제에 적용됩니다.
- 추가하는 대신 미디엄 과 엔, 우리는 범위를 요청할 수 있습니다 [ a , b ] 그 합계가 놓여 있습니다.
- 곱하는 대신 미디엄 으로 엔 우리는 요청할 수 있습니다 케이 결과의 비트 (구체적인 일반적인 예는 부호 또는 패리티 비트)입니다.
- 수식에 만족스러운 할당을 요청하는 대신 만족스러운 할당이 포함 된 집합을 요청할 수 있습니다.
원래 문제에 대한 해결책은 여전히 수정 된 문제에 대한 해결책이므로 문제를 변경했을뿐만 아니라 엄격하게 일반화했습니다. 답을 얻지 못한 가장 큰 질문은 다음과 같습니다. 대략적인 솔루션을 어떻게 찾을 수 있습니까?
추상 해석 아이디어 2 : 원래 솔루션의 고정 소수점 특성
두 번째 큰 아이디어는 많은 문제에 대한 일련의 솔루션 이 후보 솔루션의 격자에서 고정 점으로 특성화되는 것을 관찰하는 것입니다. 예를 들어, 그래프가 있고 정점이 있는지 알고 싶다고 가정하십시오.티 정점에서 도달 할 수 있습니다 에스. 우리는 이것을 세트를 찾는 것으로 세분화 할 수 있습니다.R E C H (S) 에서 도달 할 수있는 모든 정점 중 에스 그런 다음 확인 티이 세트에 있습니다. 더 관찰 할 수 있습니다R E C H (S) 방정식에 대한 가장 작은 해결책입니다.
엑스= { s } ∪ { w | v 는 X에있다 그리고 ( v , w ) 는 모서리입니다 }
고정 소수점 특성화의 가치는 정확한 솔루션을 일련의 근사치의 한계로 볼 수 있다는 것입니다. 이 예에서엔시리즈의-번째 요소는 도달 할 수있는 그래프 정점 세트입니다. 엔 에서 단계 에스 근사치는 이러한 정점의 하위 집합입니다.
고정 소수점 특성화는 설계 결정입니다. 솔루션 세트에는 여러 가지 특성이 있습니다. 각각의 장점이 다를 수 있습니다. 프로그래밍 언어의 경우 그래프를 다루는 것보다 더 많은 구조를 가지고 있습니다. 우리가 염려하는 고정 소수점 방정식 은 입력 프로그램의 구조 에 대한 유도 로 정의 할 수 있습니다 . 이 아이디어는 프로그램에만 국한되지 않습니다. 문법, 논리 공식, 프로그램, 산술 표현 등과 같은 구조화 된 언어의 요소에 추상적 해석을 적용 할 때 일부 구문 객체의 구조를 유도하여 고정 소수점을 정의 할 수 있습니다.
이 고정 소수점 특성 분석을 통해 특정 방식의 컴퓨팅 솔루션을 약속합니다. 이 고정 소수점은 원래 문제를 해결하는 것만 큼 어렵 기 때문에 실제로 계산하지는 않습니다. 이로 인해 다음 단계로 넘어갑니다.
추상 해석 아이디어 3 : 고정 점 근사
함수의 고정 점을 계산하는 대신 에프 격자로 엘다른 함수의 고정 점을 계산할 수 있습니다 지 격자로 미디엄. 관련 조건이 충족 된 경우미디엄 에 엘에서 계산 된 솔루션 미디엄 에서 솔루션의 근사값이 보장됩니다. 엘. 이것은 추상 해석의 기본 결과 중 하나이며 일반적으로 고정 소수점 이동 정리 라고합니다 . 소리 상태는 Galois 연결 또는 추상화 또는 구체화 기능과 관련된 더 약한 설정 또는 소리 관계에 의해 제공됩니다.
고정 소수점 이동 정리는 근사 분석을 설계 할 때마다 건전한 근사값을 계산하고 있음을 증명할 필요가 없습니다. 당신은 격자가엘 (원본 솔루션 포함) 및 미디엄 (근사값 포함) 및 기능 에프 과 지특정 제약 조건을 충족시킵니다. 분석의 디자이너이고 건전성에 관심이 있다면 이것은 큰 승리입니다.
고정 소수점 이전의 직관은 통찰력이 있습니다. 고정 점은 (아마도 무한한) 요소 체인의 한계로 생각할 수 있습니다. 근사 솔루션 계산은이 한계를 근사하는 것으로 체인의 요소를 근사하여 수행 할 수 있습니다.
근사 개념은 응용 프로그램에 따라 다릅니다. 여행 계획을 세우기 위해 그래프 도달 가능성을 사용하는 경우 사이에 경로가 없다는 근사치를 수락 할 수 있습니다.에스 과 티 경로가 있더라도 알고리즘에서 경로가 있다고 말하면 행복하지 않습니다. 에스 에 티 경로가없는 곳.
추상 해석 아이디어 4 : 고정 점 근사 알고리즘
지금까지 본 모든 것은 수학적 존재 결과였습니다. 마지막 단계는 근사값을 계산하는 것입니다. 근사 격자가 유한 한 경우 (또는 오름차순 / 내림차순 체인 조건이 충족되는 경우) 간단한 반복 절차를 사용할 수 있습니다. 격자가 무한하다면, 고정 점을 계산하는 것이 여전히 결정 가능할지라도 반복적 인 절차로는 충분하지 않을 수 있습니다. 이 상황에서 솔루션을 더 근사화하거나 순진한 반복 알고리즘보다 정확한 솔루션으로 빠르게 이동하기 위해 많은 기술이 사용됩니다. 솔루션 계산의 맥락에서 확대 , 축소 , 전략 반복 , 가속 등과 같은 용어를들을 수 있습니다 .
요약
제 생각에, 추상 해석은 수학적 논리가 추론에 대한 수학적 기초를 제공하는 것과 같은 방식으로 추상화 개념에 대한 수학적 기초를 제공합니다. 우리가 염려하는 많은 문제에 대한 해결책은 고정 점으로 특성화되어 있습니다. 이 관찰은 프로그래밍 언어 문제 및 컴퓨터 과학에만 국한되지 않습니다. 대략적인 솔루션은 고정 소수점의 근사치로 특성화 할 수 있으며 특수 알고리즘으로 계산됩니다. 이러한 특성과 알고리즘은 문제 인스턴스의 구조를 이용합니다. 프로그램의 경우이 구조는 언어의 구문으로 제공됩니다.
자연 메트릭스가없는 문제에 대한 근사치를 계산하는 것은 실무자에 의해 지속적으로 개발되고 개선되는 기술입니다. 추상 해석은이 기술의 과학에 대한 하나의 수학적 이론입니다.
참고 자료
추상 해석에 대한 몇 가지 유용한 자습서가 있습니다.
- 추상 해석에 대한 간단한 소개 , Patrick Cousot (Radhia Cousot와 공동 작업), 시스템 생물학 및 형식 분석 워크샵 (SBFM'12)
- Marktoberdorf Summer School 2010, Patrick과 Radhia Cousot의 추상적 해석에 의한 컴퓨터 시스템의 공식적인 검증에 대한 간단한 소개 .
- 강의 13 : 추상화 파트 I , 패트릭 쿠 s, 추상 해석, MIT 코스.
- 추상 해석 소개 , Samson Abramsky 및 Chris Hankin, 선언적 언어의 추상 해석, 1987.
- 논리 프로그램에 대한 추상 해석 및 적용 , Patrick and Radhia Cousot, 1992. 처음 두 섹션에는 몇 가지 예가 포함 된 일반적인 전체 개요가 있습니다.