나는 철학자 식사 문제 가 5 명의 철학자 사례에 근거한 이유가 궁금합니다 . 왜 안돼?
우리는 4 명의 사상가가 주어 졌을 때 5 명의 철학자 사례를 논의 할 때 발생할 수있는 모든 불쾌한 문제를 관찰 할 수 있다고 생각합니다. 그것은 역사적인 이유 일 뿐입니 까?
나는 철학자 식사 문제 가 5 명의 철학자 사례에 근거한 이유가 궁금합니다 . 왜 안돼?
우리는 4 명의 사상가가 주어 졌을 때 5 명의 철학자 사례를 논의 할 때 발생할 수있는 모든 불쾌한 문제를 관찰 할 수 있다고 생각합니다. 그것은 역사적인 이유 일 뿐입니 까?
답변:
EWD310 "순차적 프로세스의 계층 적 순서"에 쓰여진 내용에 따르면 , 학생들이 문제 해결을 보여주기 위해 설계된 알고리즘을 더 쉽게 이해할 수 있도록하기 위해 교육 목적으로 5 번이 선택된 것처럼 보입니다.
이 논문은 5가 일반적인 문제와 실제로 관련이 없다는 생각을 뒷받침한다. 먼저 "문제는 9 명 또는 25 명의 철학자들에게 제기 될 수있다"는 점을 명시 적으로 언급하고 , 다음으로 동시에 운영되는 두 가지 측면에서이를 표현함으로써 실체, "클래스 A와 클래스 B, 동일한 자원을 공유 ..."
Dijkstra가 사용하는 솔루션은 사고, 식사, 배고픈 세 가지 "철학자 상태"를 소개합니다. 문제를 해결하기 위해 제시된 코드는이 세 가지 상태 를 수많은 철학자 와 관련시키지 않고 운영합니다 .
저자가 다수의 철학자 2, 3 또는 4를 선택했을 경우, 선택된 숫자가 상태의 양 또는 다른 것과 관련이 있는지 여부에 관계없이 코드를 읽는 학생들의 혼란을 유발할 수 있습니다. 이 변경 얼마나 예를 들어 주 :이 쉽게 아래 EWD310에서 인용 설명에서 언급 한 숫자를 시도하여 테스트 할 수 있습니다 [0:4]
에 [0:3]
, [0:2]
, [0:1]
참여와 문 mod
.
이것과 반대로, 5 번은 상당히 결백 해 보이고 불필요한 연결을 불러 오지 않습니다. 철학자의 양이 자의적 이라는 것을 더 잘 설명하기 위해 선택되었다고 말할 수있다 .
언급 된 알고리즘은 다음과 같이 EWD310에 제공됩니다.
... 우리는 각 철학자와 상태 변수 "C"를 말합니다.
C[i] = 0
의미 : 철학자i
는 생각
C[i] = 2
의미 : 철학자i
가 먹고있다....
우리는 마지막 전환을 위해 중간 상태를 소개합니다
C[i] = 1
의미 : 철학자i
는 배고프다이제 각 철학자는 0, 1, 2, 0 상태를 주기적으로 통과 할 것입니다. 다음으로 물어볼 질문은 : (위험한) 철학자가 1에서 2로 전환되는 시점은 언제
K
입니까?...
우주에서 우리는 선언 된 것으로 가정
1)
semaphore mutex
, 처음 = 12)
integer array C[0:4]
, 처음에 모든 요소 = 03)
semaphore array prisem[0:4]
초기에 모든 요소 = 04)
procedure test (integer value K);
if C[(K-1) mod 5] ≠ 2 and C[K]= 1 and C[(K+1) mod 5] ≠ 2 do begin C[K]:= 2; V(prisem[K]) end;
(
K
존재할 때의 불안정성을 해결하는이 절차 는 중요 섹션 내에서만 호출됩니다).이 우주에서 철학자의 삶은
w
이제 코딩 될 수 있습니다cycle begin think; P (mutex); C[w]:= 1; test (w); V(mutex); P(prisem[w]); eat P(mutex); C[w]:= 0; test [(w+l) mod 5]; test [(w-1) mod 5]; V(mutex) end
그리고 이것은 내가 목표로하고있는 해결책을 마무리 짓습니다 ...
Dijkstra 만이 확실하게 대답 할 수 있지만 임의적이라고 확신합니다.
"이것은 원래 1965 년 Edsger Dijkstra가 테이프 드라이브 주변 장치에 액세스하기 위해 경쟁하는 컴퓨터와 관련하여 학생 시험 연습으로 공식화되었습니다. 곧 Tony Hoare는 문제를 현재 공식화했습니다."
홀수도 아니기 때문에. 따라서 대칭 또는 쌍 형성에 의존하는 알고리즘을 고안하려고 시도하지 않고 일반적인 경우에는 작동하지 않습니다.
이것은 의견입니다. 저자의 생각을 초월한 것에 대한 역사적 지식이 없습니다.