feat: wiki/concepts/ 핵심 개념 페이지 8개 생성
SDF 챕터들에서 추출한 핵심 개념: - additive-programming: 가산적 프로그래밍 (전체 관통 테마) - generic-procedures: 제네릭 프로시저 (Ch3, Ch5, Ch6) - combinators: 컴비네이터 (Ch2~Ch5) - partial-information: 부분 정보 (Ch1, Ch4, Ch6, Ch7) - degeneracy: 퇴화성 (Ch1, Ch7) - layered-data: 레이어드 데이터 + 의존성 추적 (Ch2, Ch3, Ch6, Ch7) - propagation: 전파 모델 (Ch1, Ch5, Ch6, Ch7) - domain-specific-language: DSL (Ch2~Ch5) wiki/index.md Concepts 섹션 등록, wiki/log.md 기록 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
134
wiki/concepts/propagation.md
Normal file
134
wiki/concepts/propagation.md
Normal file
@@ -0,0 +1,134 @@
|
||||
---
|
||||
title: 전파 모델
|
||||
tags: [concept, SDF]
|
||||
sources: [SDF-ch1-flexibility, SDF-ch5-evaluation, SDF-ch6-layering, SDF-ch7-propagation]
|
||||
updated: 2026-04-30
|
||||
---
|
||||
|
||||
# 전파 모델
|
||||
|
||||
## 한 줄 정의
|
||||
|
||||
공유 셀로 연결된 자율적 전파기들이 부분 정보를 단조적으로 축적·전파하는 다방향 계산 모델로, 의존성 추적과 결합하면 지능적 백트래킹이 가능한 비결정적 탐색 엔진이 된다.
|
||||
|
||||
## 핵심 내용
|
||||
|
||||
### 폰 노이만 모델에서의 이탈
|
||||
|
||||
전통적 프로그래밍은 폰 노이만 모델을 따른다: 변수는 값 하나를 담고, 표현식은 트리 구조를 타고 올라가며 평가되며, 제어 흐름은 순차적·방향성을 가진다.
|
||||
|
||||
이 모델의 근본적 한계: **단방향성**. `v = a * b`는 `v`를 계산하지만, `a`나 `b`를 역으로 구하려면 별도의 수식이 필요하다. 물리 법칙 `F = G*m1*m2/r²`는 6개의 역방향 관계를 함께 담고 있지만, 코드로는 하나의 방향만 표현된다.
|
||||
|
||||
전파 모델은 이 단방향성을 깬다:
|
||||
|
||||
> "The propagator model is built on the idea that the basic computational elements are propagators, autonomous independent machines interconnected by shared cells through which they communicate."
|
||||
|
||||
### 셀과 전파기: 두 기본 요소
|
||||
|
||||
**셀(cell)**: 정보를 축적하는 공유 저장소.
|
||||
- 하나의 값 대신 *현재까지 알려진 최선의 정보*를 담는다
|
||||
- 새 정보가 도착하면 기존 정보와 **병합(merge)**: 단조적, 정보를 잃지 않음
|
||||
- 모순이 감지되면 신호를 보냄
|
||||
|
||||
**전파기(propagator)**: 셀들을 연결하는 자율 기계.
|
||||
- 입력 셀들의 값을 읽어 계산하고 출력 셀에 정보를 추가
|
||||
- 입력이 변하면 자동으로 재실행
|
||||
- 독립적: 다른 전파기의 존재를 모른다
|
||||
|
||||
```scheme
|
||||
;; 곱셈 제약: a * b = c (세 방향 모두)
|
||||
(define-c:prop (c:* a b c)
|
||||
(p:* a b c) ; c = a * b
|
||||
(p:/ c a b) ; b = c / a (a가 알려지면)
|
||||
(p:/ c b a)) ; a = c / b (b가 알려지면)
|
||||
```
|
||||
|
||||
### 배선도 언어
|
||||
|
||||
전파 네트워크는 **배선도(wiring diagram)**로 표현된다. 표현식 트리가 아니라 셀(와이어)과 전파기(게이트)로 이루어진 회로도다. 이 비유는 매우 자연스럽다:
|
||||
- 회로의 와이어는 셀
|
||||
- 회로의 게이트는 전파기
|
||||
- 회로 구성 = 전파 네트워크 구성
|
||||
|
||||
배선도의 특성:
|
||||
- **다방향**: 와이어는 양방향. 신호가 어느 방향으로도 흐를 수 있음
|
||||
- **병렬적**: 여러 게이트가 독립적으로 활성화
|
||||
- **부분 결과 즉시 사용**: 전체 완료를 기다릴 필요 없음
|
||||
- **확장 가능**: 새 게이트를 연결하면 기능 추가
|
||||
|
||||
### 부분 정보와 구간 산술
|
||||
|
||||
셀은 숫자 하나 대신 구간을 값으로 가질 수 있다:
|
||||
|
||||
```scheme
|
||||
(make-interval 2.5 3.1) ; "2.5 이상 3.1 이하"
|
||||
```
|
||||
|
||||
두 측정이 같은 셀에 정보를 제공할 때 교집합을 취한다:
|
||||
```
|
||||
구간 [2.5, 3.1] ∩ [2.8, 3.5] = [2.8, 3.1] ; 더 정확해짐
|
||||
구간 [2.5, 3.1] ∩ [4.0, 5.0] = ∅ ; 모순!
|
||||
```
|
||||
|
||||
퇴화성 원칙의 구현: 여러 독립 소스가 동일한 셀에 구간 정보를 제공하고, 시스템이 자동으로 병합하여 더 정확한 답을 낸다.
|
||||
|
||||
### 의존성 추적과 전제
|
||||
|
||||
레이어링(Ch6)의 의존성 레이어를 전파 모델에 통합하면, 각 셀의 값이 어떤 전제(premise)에서 유래했는지를 추적한다:
|
||||
|
||||
```scheme
|
||||
(tell! Vega-parallax interval 'FGWvonStruve1837)
|
||||
;; 이 값의 전제: FGWvonStruve1837
|
||||
```
|
||||
|
||||
파생된 값의 전제 집합 = 모든 기여 전제들의 합집합. 전파되는 값에 의존성 정보가 자동으로 따라간다.
|
||||
|
||||
이를 통해 두 가지 능력이 생긴다:
|
||||
1. **설명(explanation)**: "이 결론이 어떤 데이터에서 유래했는가?"
|
||||
2. **지능적 백트래킹**: 모순의 원인을 파악하여 관련 없는 선택지를 재탐색하지 않음
|
||||
|
||||
### 의존성 지향 백트래킹
|
||||
|
||||
Ch5의 amb는 실패하면 직전 선택지로 돌아가는 연대기적(chronological) 백트래킹을 사용한다. 이는 이미 검증된 부분을 불필요하게 재탐색하는 비효율이 있다.
|
||||
|
||||
의존성 지향 백트래킹(dependency-directed backtracking):
|
||||
|
||||
1. 각 결정(hypothesis)이 전제 레이블을 가짐
|
||||
2. 모순 발생 → 모순을 일으킨 전제들의 집합(nogood set) 파악
|
||||
3. 이 전제들 중 하나를 번복하는 선택지로 직접 점프
|
||||
4. 관련 없는 선택지들은 건너뜀
|
||||
|
||||
예: 100개의 선택지 중 1번과 50번이 모순을 일으킨다면, 2~49번은 탐색하지 않고 바로 1번 또는 50번을 번복하는 선택지를 찾는다.
|
||||
|
||||
### 가산적 확장의 완성형
|
||||
|
||||
전파 네트워크는 가산적 프로그래밍의 이상에 가장 가깝다:
|
||||
|
||||
> "The structure is additive: new ways to contribute information can be included just by adding new parts to a network, whether simple propagators or entire subnetworks."
|
||||
|
||||
새 추정 방법은 새 전파기 추가. 새 제약은 새 제약 전파기 추가. 기존 네트워크는 전혀 수정하지 않는다.
|
||||
|
||||
## SDF에서의 등장
|
||||
|
||||
- [[SDF-ch1-flexibility]]: 탐색적 행동, 퇴화성, 생성-검증 메커니즘으로 동기 부여. 전파 모델의 철학적 선구자
|
||||
- [[SDF-ch5-evaluation]]: amb가 연대기적 백트래킹을 구현. 전파 모델이 이를 의존성 지향으로 업그레이드한다는 관계
|
||||
- [[SDF-ch6-layering]]: 의존성 레이어가 전파 시스템의 핵심 재료. 없으면 의존성 지향 백트래킹 불가
|
||||
- [[SDF-ch7-propagation]]: 핵심 챕터. 셀/전파기 구조, 구간 산술, 전제를 가진 값, 의존성 지향 백트래킹, 배선도 언어
|
||||
|
||||
## 실천 시 주의점
|
||||
|
||||
**수렴 보장**: 전파기 네트워크가 무한 루프 없이 고정점(fixed point)에 수렴한다는 보장이 필요하다. 단조적 병합이 이를 보장하는 핵심 조건이다. 비단조적 업데이트(값을 번복하거나 구간을 넓히는 것)가 있으면 수렴이 보장되지 않는다.
|
||||
|
||||
**디버깅의 어려움**: 다방향 전파는 "이 값이 어디서 왔는가?"를 추적하기 어렵게 만들 수 있다. 의존성 추적이 이 문제를 부분적으로 해결하지만, 복잡한 네트워크에서는 여전히 어렵다.
|
||||
|
||||
**순환 의존성**: 셀 A의 값이 전파기를 통해 셀 B에 영향을 주고, 셀 B가 다시 셀 A에 영향을 줄 때 순환이 발생한다. 이것이 의미 있는 제약(예: `x + y = z, x - y = w`)인지 아니면 실수인지 구분이 필요하다.
|
||||
|
||||
**확장의 위험**: "새 전파기를 추가만 하면 된다"는 가산성이 실제로는 기존 네트워크의 동작을 변경할 수 있다. 새 전파기가 기존 셀에 더 좁은 구간을 강요하면 이전에 유효했던 값이 모순이 될 수 있다.
|
||||
|
||||
## 관련 개념
|
||||
|
||||
- [[additive-programming]] — 배선도에 전파기 추가가 가장 순수한 형태의 가산적 확장
|
||||
- [[partial-information]] — 셀은 부분 정보를 단조적으로 축적하는 저장소
|
||||
- [[degeneracy]] — 여러 전파기가 동일 셀에 독립적 추정값을 제공하는 퇴화적 구조
|
||||
- [[layered-data]] — 의존성 레이어가 전파 시스템의 지능적 백트래킹을 가능하게 함
|
||||
- [[domain-specific-language]] — 배선도 언어 자체가 제약 기반 DSL
|
||||
Reference in New Issue
Block a user