게시판 인덱스

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

2-3 질문(merge의 인자)입니다.(추가: 2-4 function definition)

 
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2018)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
유진선14



가입: 2018년 9월 11일
올린 글: 18

올리기올려짐: 2018년9월19일 15:53    주제: 2-3 질문(merge의 인자)입니다.(추가: 2-4 function definition) 인용과 함께 답변

조교님 안녕하세요,

<strike>
2-3 문제를 보면 merge는 insert와 deleteMin두 가지 경우에만 호출되는 것 같습니다.
insert 에서는 이미 존재하는 왼쏠힙 h와 단일 node하나를 합치는 것을 수행하고
deleteMin에서는 이미 정렬이 된 lh와 rh을 합치는 것, 즉, 각각의 최상위 node중 어느 node를 merge한 heap의 최상위 node로 삼을지를 결정하는 과정을 수행합니다.

그러면, 이 두 가지를 제외한 merge도 염두에 두어야 할까요? 즉, 서로 아무런 연관이 없는, 완전 개별적인 서로 다른 왼쏠힙을 merge하는 상황도 일어날 수 있을까요?

부연설명: deleteMin 에서 merge를 할 경우, lh의 최상위 노드의 급수는 "무조건" (기존 힙 h의 오른쪽 node를 root로 두는 heap) rh의 최상위 노드의 급수보다 크거나 같게 됩니다.
제 질문은, 독립적으로 merge를 수행할 때 위의 조건들이 보존되지 않는 임의의 (그러나 단일 node 이상의) 두 heap을 merge할 가능성이 있는지 궁금합니다.
</strike>

해결되었습니다. merge하는 두 heap의 급수가 역순이면 위치를 바꾸기만 하면 된다는 것을 깨달았습니다.


추가적으로, merge를 포함한 함수들을 수행할 때 영향을 받는 모든 node의 rank을 개별적으로 수정해야 하는지도 궁금합니다.(아마 yes일 것으로 예상합니다.)


감사합니다.



(추가) 2-4
과제에는 enQ가
코드:

let enQ = ......


로 정의되어 있습니다. 이를
코드:

let enQ: queue * element -> queue = fun ...

꼴로 해도 괜찮을까요?


또한,
int list list 에도 int list 처럼 .hd를 사용할 수 없는건가요?
제가 과제에서 type queue = int list list * int list list로 정의하고,
(중략) queue 타입의 right을 정의한다음에
right.hd를 입력하니

코드:

Unbound record field hd


라는 메시지가 나왔습니다.
int list list 에는 int list처럼 hd를 못 사용하는 것 같은데, 혹시 그 이유가 있는지, 또 그럼 int list list의 첫 element 인 int list타입의 element를 추출할 수 있는 방법이 있는지(아니면 이건 학생이 알아서 해결해야 할 문제인지) 궁금합니다.

감사합니다.
위로
사용자 정보 보기 비밀 메시지 보내기
배요한
Site Admin


가입: 2018년 3월 6일
올린 글: 107

올리기올려짐: 2018년9월19일 23:54    주제: 인용과 함께 답변

안녕하세요, 유진선 학생.

1.

인용:
let enQ: queue * element -> queue = fun ... 꼴로 해도 괜찮을까요?


네, 괜찮습니다.

2.
인용:
int list list 에도 int list 처럼 .hd를 사용할 수 없는건가요?

사용 할 수 있습니다. 제 생각에는 List.hd라고 안 쓰셔서 그런것 같습니다.
예)
코드:

# let k = [[3]];;
val k : int list list = [[3]]
# List.hd k;;
- : int list = [3]


감사합니다.


TA 이동권
e-mail: dklee@ropas.snu.ac.kr

TA 배요한
e-mail: yhbae@ropas.snu.ac.kr
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2018) 시간대: GMT + 9 시간(한국)
페이지 11

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


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