Dijkstra는 그의 논문“The Humble Programmer”에서 언급 한 자원 봉사자들에게 어떤 임무를 부여 했습니까?


65

에서 다 익스트라의 논문 "겸손 프로그래머" 그는 일부 자원 봉사자를 해결하기 위해 문제를 준 언급 :

“정말 숙련 된 자원 봉사자들과 함께 약간의 프로그래밍 실험을했지만 의도하지 않았고 예상치 못한 결과가 나타났습니다. 저의 자원 봉사자 중 누구도 분명하고 가장 우아한 해결책을 찾지 못했습니다. 면밀한 분석 결과, 이것은 공통의 출처를 갖는 것으로 판명되었습니다. 반복 개념은 강화 된 관련 변수에 대한 아이디어와 너무 밀접하게 연결되어있어 명백한 것을 보지 못하도록 정신적으로 차단되었습니다. 그들의 솔루션은 효율성이 떨어지고, 이해하기가 어려웠으며, 솔루션을 찾는 데 오랜 시간이 걸렸습니다.”

Dijkstra가 자원 봉사자들에게 겪은 문제는 무엇입니까? 해결책은 무엇입니까?


3
나는 재귀 적 인 것에 내기를 걸었다. EWD654 "피보나치를 기리기 위해"는 좋은 후보 인 것 같습니다
gnat

이 질문은 사람들이 추측하거나 추측 할 수있는 기회로 이것을 사용하지 않는 한 좋을 수 있습니다. 찾기가 어려울 수 있지만 답이 있으며 역사적인 질문이 여기에 있습니다.

9
이 인용문은 EWD340 "Very Humble Programmers"에서 나왔습니다. 실험이 무엇인지에 대한 정확한 설명을 찾을 수 없었지만 여기에 그의 전체 대화 내용과 연결되어 있습니다. cs.utexas.edu/~EWD/transcriptions/EWD03xx/EWD340.html
Tyler Ferraro

2
누구나 무료로 Dijkstra 견적을 찾을 수 있습니까? 그에 대해 내가 가장 좋아하는 인용문은 "컴퓨터 과학의 오만함이 나노-다이크 스트라로 측정된다"입니다.-Alan Kay
James Anderson

우리는 젊은이들에게 조언을 줄 때 매우 조심해야합니다. 때때로 그들은 그것을 따릅니다! ... heh :-) 출처 : en.wikiquote.org/wiki/Edsger_W._Dijkstra
Robert French

답변:


11

"식사하는 철학자 문제"는 제시된 문제였다.

기본적으로 5 명의 철학자가 필요합니다. (각 철학자 앞에서 음식을 끝내지 않는 판을 상상해보십시오) 각 판 사이에는 포크 (5 판, 5 포크, 5 철학자)가 있습니다.

철학자는 오른쪽에 포크와 왼쪽에 포크를 둘 다 잡고있는 경우에만 먹을 수 있습니다. (한 번에 두 명의 철학자 만 먹을 수 있습니다).

포크는 가능하면 언제든 집어 올릴 수 있습니다. 각 포크는 상호 의존적으로 픽업해야합니다. (한번에 한).

철학자는 식사를하지 않지만, 생각하고 있습니다 (상태를 바꿔야 할 것이 문제를 일으키는 것입니다).

교착 상태에 빠진 시스템을 만들지 않고 (한 철학자가 한 포크를 잡고 다른 철학자를 기다리면서 다른 철학자가 먹는 것을 방지하는) 각자가 어떻게 먹고 대체 사고 (다른 사람들이 먹을 수 있도록) 할 수있게합니까?

이것은 동시 시스템에 뿌리를두고 있으며 동시성을 논의 할 때 제시되는 전형적인 대학 문제입니다.

나는 문제를 해결하기 위해 4 개 또는 5 개의 "공식적인"알고리즘이 개발되었다고 생각하지만 "Dining philosophers problem"에 대한 Google의 빠른 검색으로 많은 결과를 얻을 수 있습니다.

866 페이지의 각주에서이 문서의 원본읽으면 "IFIP Congress 1965, 213-217의 절차" "동시 프로그래밍 제어 문제 해결 방법"이라고 나와 있습니다.

동시성 및 공유 리소스의 문제는 "식사하는 철학자 문제"입니다. :-)

희망이 도움이됩니다.


6
이것은 주로 역사적인 질문이기 때문에 어떤 출처가 있습니까?
yannis

1
실제로, 당신이 제공하는 출처는 Dijkstra가 자원 봉사자에게 준 것과 같이 식당 철학자 문제를 언급하지 않는 것 같습니다. 뭔가 빠졌습니까? 내가 찾고있는 것은 당신을지지하는 믿을만한 정보원입니다 . "철학 철학자 문제"는 문제 자체에 대한 설명이 아니라 문제 제시된 주장 이었습니다 .
yannis

@Robert 링크에 감사드립니다. :) (그것을 제거하지 마십시오, 그들은 다른 사람에게 유용 할 수 있습니다) 나는 그가 준 문제인지 기대하고 있습니다.
user712092

4
@RobertFrench 우리가 찾고있는 것은 Dijkstra가 질문에서 인용 한 특정 문제와 Dijkstra가 공식화 한 문제가 아니라 그것을 증명하는 출처입니다. 인용문에는 그것이 자신의 문제 중 하나라는 것을 암시하는 것도 없으며 실제로 어떤 문제 일 수 있습니다. 물론 다이닝 철학자들은 Dijkstra의 원본 중 하나이며 (Car Hoare의 도움을 받아), 아무도 논쟁의 여지가 없지만 그 질문과는 아무런 관련이 없습니다 .
yannis

4
이것은 명백한 잘못입니다. "동시 프로그래밍 제어에서 문제의 해결책"은 식사 철학자 문제이며, 그것은 겸손한 프로그래머에서 인용에서 Dijkstra의 초기 작품 중 하나로 언급되지만 인용에서 문제라고 주장 할 수는 없습니다.
yannis
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.