Files
softwaredesign/wiki/concepts/propagation.md
minsung f868de1ce7 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>
2026-04-30 14:55:04 +09:00

7.1 KiB

title, tags, sources, updated
title tags sources updated
전파 모델
concept
SDF
SDF-ch1-flexibility
SDF-ch5-evaluation
SDF-ch6-layering
SDF-ch7-propagation
2026-04-30

전파 모델

한 줄 정의

공유 셀로 연결된 자율적 전파기들이 부분 정보를 단조적으로 축적·전파하는 다방향 계산 모델로, 의존성 추적과 결합하면 지능적 백트래킹이 가능한 비결정적 탐색 엔진이 된다.

핵심 내용

폰 노이만 모델에서의 이탈

전통적 프로그래밍은 폰 노이만 모델을 따른다: 변수는 값 하나를 담고, 표현식은 트리 구조를 타고 올라가며 평가되며, 제어 흐름은 순차적·방향성을 가진다.

이 모델의 근본적 한계: 단방향성. v = a * bv를 계산하지만, ab를 역으로 구하려면 별도의 수식이 필요하다. 물리 법칙 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): 셀들을 연결하는 자율 기계.

  • 입력 셀들의 값을 읽어 계산하고 출력 셀에 정보를 추가
  • 입력이 변하면 자동으로 재실행
  • 독립적: 다른 전파기의 존재를 모른다
;; 곱셈 제약: 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)**로 표현된다. 표현식 트리가 아니라 셀(와이어)과 전파기(게이트)로 이루어진 회로도다. 이 비유는 매우 자연스럽다:

  • 회로의 와이어는 셀
  • 회로의 게이트는 전파기
  • 회로 구성 = 전파 네트워크 구성

배선도의 특성:

  • 다방향: 와이어는 양방향. 신호가 어느 방향으로도 흐를 수 있음
  • 병렬적: 여러 게이트가 독립적으로 활성화
  • 부분 결과 즉시 사용: 전체 완료를 기다릴 필요 없음
  • 확장 가능: 새 게이트를 연결하면 기능 추가

부분 정보와 구간 산술

셀은 숫자 하나 대신 구간을 값으로 가질 수 있다:

(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)에서 유래했는지를 추적한다:

(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