게시판 인덱스

 
 FAQFAQ   검색검색   멤버리스트멤버리스트   사용자 그룹사용자 그룹   사용자 등록하기사용자 등록하기 
 개인 정보개인 정보   비공개 메시지를 확인하려면 로그인하십시오비공개 메시지를 확인하려면 로그인하십시오   로그인로그인 

조교님, 질문 2가지 있습니다.

 
글 쓰기   답변 달기     게시판 인덱스 -> 046.016 Computational Civilization (Spring 2017)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
동규



가입: 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 의 경우, 헤더가 *에 위치한 채로 시작하는 것은, 새로운 초기 상태와 헤더위치 (제일 왼쪽) 로부터 시작해서 *의 위치로 마커를 이동한 후 학생분께서 작성하신 시작 상태로 넘기는 작업을 한 것과 같기 때문입니다.
다시 말해 임의의 위치에 헤더를 놓고 시작하는 것은, 결국 어떤 새로운 초기 명령을 통해 원하는 위치에 헤더를 갖다놓은 뒤 그 이후에 작성한 명령을 시작하는 것과 같습니다.
위로
사용자 정보 보기 비밀 메시지 보내기 이메일 보내기
이전 글 표시:   
글 쓰기   답변 달기     게시판 인덱스 -> 046.016 Computational Civilization (Spring 2017) 시간대: GMT + 9 시간(한국)
페이지 11

 
건너뛰기:  
새로운 주제를 올릴 수 없습니다
답글을 올릴 수 없습니다
주제를 수정할 수 없습니다
올린 글을 삭제할 수 없습니다
투표를 할 수 없습니다


Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group
Translated by kss & drssay