|
|
이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
동규
가입: 2017년 3월 20일 올린 글: 3
|
올려짐: 2017년3월21일 18:27 주제: 조교님, 질문 2가지 있습니다. |
|
|
질문1. Turing machine simulator 의 rule 관련 질문
<current symbol> 에서 *(스타) 심볼과 특정 심볼이 있는 규칙이 있을 때, 실행 우선순위가 궁금합니다.
예를 들어, 다음과 같은 두 가지 규칙이 들어간 프로그램을 작성했다면,
S0 * * r S0
S0 b _ r halt
이 프로그램의 의도는 'b 라는 심볼을 만나기 전까지는 나머지 심볼은 그대로 내버려두고 계속 오른쪽으로 움직여라 그리고
b 를 만나게 되면 b 심볼을 없애고 스탑하라' 입니다. 그런데 헤더가 b 라는 심볼을 만났을 때에 두 번째 규칙이 작용할 수도 있지만
첫 번째 규칙이 적용되어 그대로 남겨두고 오른쪽으로 이동할 수도 있습니다.
* 심볼과 특정 심볼이 들어간 규칙 중에 우선순위가 있나요? 아니면 랜덤으로 규칙을 선택해서 실행하나요?
제가 해봤을 때는 항상 * 보다는 특정 심볼을 가진 규칙이 우선적으로 실행되었습니다. 그래서
특정 심볼을 가진 규칙이 더 우선순위를 가진다고 생각하고 있었는데 이것이 맞는지 확인하고 싶습니다.
질문2. 비교 튜링기계의 초기 시작 상태에 대한 질문
문제를 풀었는데 초기 상태에 대한 질문이 있습니다. 헤더의 시작 위치는 두 자연수 둘 중 어느 하나의 처음에서 시작하여야
한다고 하셔서, 저는 첫 번째 숫자가 아니라 두 번째 숫자의 맨 처음 부분에서 헤더가 시작하도록 하였습니다. 그런데 더 정확히는
마커를 사용하였고 두 번째 숫자의 바로 왼쪽 칸에 있는 마커에서부터 시작합니다. 초기 상태의 제 헤더 위치는 문제가 없나요?
예를 들어 5 와 6 을 비교한다고 할 때 구분자를 D, 마커를 M 이라고 하면,
D_1_1_1_1_1_D*M1_1_1_1_1_1_D
처럼 두 번째 숫자 6 의 맨 처음 1 의 바로 왼쪽 마커 자리부터 헤더가 시작합니다. 시작 위치가 이 조건을 만족하기만 하면
어떤 임의의 두 자연수를 비교하더라도 정확히 수행됩니다. 헤더가 꼭 두 숫자의 첫 번째 1의 위치에서 시작해야만 하는 건 아니지요? |
|
위로 |
|
|
양준모17
가입: 2017년 2월 27일 올린 글: 21
|
올려짐: 2017년3월22일 11:41 주제: 안녕하세요. 답변드립니다. |
|
|
안녕하세요. 컴퓨터과학이 여는 세계 조교 양준모입니다.
올려주신 두가지 질문에 대한 답변드립니다.
답변1. 네 맞습니다. 이번 과제에서 주어진 튜링 기계 문법에서는 우선 순위가 특정 심벌이 * 보다 높습니다.
그러므로 본 과제를 하실 때는 그 점에 유의하셔서 튜링 기계를 만드시면 될 것 같습니다.
답변2. 헤더의 위치는 연산의 결과만 옳다면 상관이 없습니다.
다만, 여러 입력들에 대해서 동일하게 제대로 연산 결과를 낼 수 있는 튜링 기계를 제출하셔야 하니 제출하시기 전에 여러 입력 값을 넣어 테스트를 해보시길 바랍니다.
좋은 질문 감사합니다.
TA 양준모
e-mail: jmyang@ropas.snu.ac.kr
phone: 010-4182-3309
office: bldg 302, 312-2
TA 조상우
e-mail: swjoh@ropas.snu.ac.kr
phone: 010-9152-0008
office : bldg 302, 312-2 |
|
위로 |
|
|
조상우15
가입: 2015년 9월 7일 올린 글: 27
|
올려짐: 2017년3월27일 18:00 주제: 두 번째 질문에 대한 추가적인 답변입니다. |
|
|
질문 2)에서 헤더의 초기 상태를 임의로 바꾸셨다고 했는데, 이것은 헤더의 시작위치가 제일 왼쪽 (즉 첫 번째 숫자의 시작 위치) 인 것과 동치입니다.
예시로 들어주신 D_1_1_1_1_1_D*M1_1_1_1_1_1_D 의 경우, 헤더가 *에 위치한 채로 시작하는 것은, 새로운 초기 상태와 헤더위치 (제일 왼쪽) 로부터 시작해서 *의 위치로 마커를 이동한 후 학생분께서 작성하신 시작 상태로 넘기는 작업을 한 것과 같기 때문입니다.
다시 말해 임의의 위치에 헤더를 놓고 시작하는 것은, 결국 어떤 새로운 초기 명령을 통해 원하는 위치에 헤더를 갖다놓은 뒤 그 이후에 작성한 명령을 시작하는 것과 같습니다. |
|
위로 |
|
|
|
|
새로운 주제를 올릴 수 없습니다 답글을 올릴 수 없습니다 주제를 수정할 수 없습니다 올린 글을 삭제할 수 없습니다 투표를 할 수 없습니다
|
Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group Translated by kss & drssay
|