동적 프로그래밍의 이름을 바꿀 수 있다면 무엇이라고 부릅니까?
동적 프로그래밍의 이름을 바꿀 수 있다면 무엇이라고 부릅니까?
답변:
Richard Bellman의 자서전 은 의도적으로 산만하게하기 위해 "동적 프로그래밍"이라는 용어를 선택했다고 제안합니다.
1950 년대는 수학적 연구를하기에는 좋지 않았습니다. 우리는 워싱턴에 윌슨이라는 매우 흥미로운 신사가있었습니다. 그는 국방 장관이며 병리학적인 두려움과 '연구'라는 단어에 대한 증오심을 가지고있었습니다. 나는이 용어를 가볍게 사용하지 않습니다. 나는 그것을 정확하게 사용하고 있습니다. 그의 얼굴이 질식하고, 빨갛게 변했고, 사람들이 자신의 앞에서 '연구'라는 단어를 사용하면 폭력적이 될 것입니다. 그렇다면 '수학적'이라는 용어에 대해 그가 어떻게 느꼈는지 상상할 수 있습니다. RAND Corporation은 공군에 의해 고용되었으며 공군은 기본적으로 윌슨을 사장으로 사용했습니다. 그래서 나는 실제로 RAND Corporation 내부에서 수학을하고 있다는 사실로부터 윌슨과 공군을 보호하기 위해 무언가를해야한다고 느꼈다.
어떤 제목, 어떤 이름을 선택할 수 있습니까? 처음에는 계획, 의사 결정, 사고에 관심이있었습니다. 그러나 계획은 여러 가지 이유로 좋은 단어가 아닙니다. 따라서 '프로그래밍'이라는 단어를 사용하기로 결정했습니다. 나는 이것이 역동적이며 다 단계적이며 시간에 따라 다르다는 생각을 극복하고 싶었습니다. 나는 한 마리의 돌로 두 마리의 새를 죽일 것이라고 생각했습니다. 고전적인 물리적 의미에서 절대적으로 정확한 의미, 즉 '동적'을 갖는 단어를 보자. 또한 형용사로서 매우 흥미로운 특성을 가지고 있으며, '동적'이라는 단어를 중대하게 사용하는 것은 불가능합니다. 중대한 의미를 줄 수있는 조합에 대해 생각해보십시오. 그것은 불가능. 따라서“동적 프로그래밍”은 좋은 이름이라고 생각했습니다. 의회 의원조차도 반대 할 수없는 일이었습니다.
(자신의 AI 교과서 아웃으로 러셀과 노르 빅 포인트는, 그러나,이 이야기는 벨맨 먼저 구 "동적 프로그래밍"을 사용했다. 진리의 창조적 꾸밈해야 1952 년 , 그리고 찰스 어윈 윌슨은 1953까지 국방 장관이되지 않았다. )
어쨌든 Bellman의 독창적 인 동기 부여는 다단계 계획을 제안 하지만 적어도 알고리즘 목적을 위해 음절 수가 적은 간단한 상향식 재귀 와 같은 것을 선호합니다 .
DP에는 두 가지 중요한 측면이 있습니다. (1) 하위 문제 정의 (즉, 정수, 정점, 정점의 하위 집합 등으로 색인 된 다차원 배열 일 수있는 "테이블"설정) 및 (2) 재귀 적으로 해결 하위 문제. 나는 두 가지 측면을 모두 나타내는 이름으로 "표 / 표식 재귀"를 제안합니다.
메모 화 는 상당히 일반적인 변형입니다.
알고리즘 디자인의 동적 프로그래밍에 대한 최근 강의 후 학생들에게이 기술에 대한 새로운 이름을 제안하도록 요청했습니다. "터프 프로그래밍"에 만족하면서 기술을 더욱 기억에 남을만한 무언가를 원했습니다. 여기서 논의한 후, 하향식과 하향식의 두 가지 이름을 제안 할 수 있습니다 :
Multiway-Divide 및 Memoized-Conquer (일명 Divide ^ M & Conquer ^ M) 및
모든 하위 문제 병합 (일명 Merge_all)
이 백서 ( paywalled doi )는 DP "분해 가능"을 사용하여 공격 할 수있는 문제 를 말합니다.
나는 최근에 몇몇 동료들과 이것을 논의했고, 격렬한 토론 후에 우리는 테이블 형식의 콜 캐싱을 생각해 냈습니다 .
나는 유도 성 프로그래밍 (Inductive Programming) 이라는 이름을 제안 하고자한다. 또는 역 유도 프로그래밍도 가능 합니다. 그리고 예, 저에게 DP는 관념에 대한 오래된 좋은 의미에서 귀납법과 밀접한 관련이 있습니다. 메모, 캐시, 테이블 등은 기술의 요소 일 뿐이며, 크랙을 시도하는 방식의 핵심이 아닙니다.
아마도 table 과 fill 이라는 단어가 포함되어있을 것입니다 .