TAOCP 2.2.6

503 views

Published on

Published in: Health & Medicine, Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
503
On SlideShare
0
From Embeds
0
Number of Embeds
18
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

TAOCP 2.2.6

  1. 1. [ The Art of Computer Programming ]<br />2.2.6 배열과 직교 목록연습문제 풀이<br />아.꿈.사 Study<br />2011. 04. 30<br />김한솔<br />itsfitsol@gmail.com<br />
  2. 2. 풀이할 연습문제<br />2. [21]<br />6. [M24]<br />9. [22]<br />12. [20]<br />13. [22]<br />15. [29]<br />24. [25]<br />
  3. 3. 풀이할 연습문제<br />2. [21]<br />6. [M24]<br />9. [22]<br />12. [20]<br />13. [22]<br />15. [29]<br />24. [25]<br />커누스 할아버지가중요<br />하다고 한 문제<br />
  4. 4. 풀이할 연습문제<br />2. [21]<br />6. [M24]<br />9. [22]<br />12. [20]<br />13. [22]<br />15. [29]<br />24. [25]<br />재미<br />있을것 같아서<br />건드렸다가 <br />후회<br />한 문제<br />
  5. 5. 2.<br />[21] 공식 (5)와 (6)은 1 ≤ r ≤ k 에 대해 0 ≤ I r ≤ d r이라는 <br />가정하에서 유도한 것이다. l r과 u r이 해당 차원의 하계,<br />상계라고 할 때, l r≤ I r ≤ u r 인 경우에 적용되는 일반적인 공식을 제시하라.<br />
  6. 6. 공식(5), (6) 을 이용해서<br />I r 위치에서하계인 l r위치를 <br />빼주면<br />되지 않을까?<br />
  7. 7. 공식(5), (6) 을 이용해서<br />I r 위치에서하계인 l r위치를 <br />빼주면<br />되지 않을까?<br />즉, 공식(5), (6) 에서<br />LOC(A[I1, I2, … , Ik])- LOC(A[l1, l2, … , lk])<br />…<br />LOC(A[0, 0, … , 0])<br />LOC(A[l1, l2, … , lk])<br />LOC(A[I1, I2, … , Ik])<br />LOC(A[u1, u2, … , uk])<br />…<br />
  8. 8. 2.<br />[21] 공식 (5)와 (6)은 1 ≤ r ≤ k에 대해 0 ≤ I r ≤ d r 이라는 <br />가정하에서 유도한 것이다. l r과 u r이 해당 차원의 하계,<br />상계라고 할 때, l r≤ I r ≤ u r인 경우에 적용되는 일반적인 공식을 제시하라.<br />LOC(A[I1, I2, … , Ik]) = LOC(A[0, 0, … , 0]) +<br />-<br />LOC(A[l1, l2, … , lk]) = LOC(A[0, 0, … , 0]) +<br />LOC(A[I1, I2, … , Ik]) - LOC(A[l1, l2, … , lk]) <br />= - <br />∴ LOC(A[I1, I2, … , Ik]) = LOC(A[l1, l2, … , lk])<br />+ - <br />여기서,<br />
  9. 9. 6.<br />[M24] “4면체 배열” A[i, j, k]와 B[i, j, k]가 있다. A의 경우<br />에는 0 ≤ k ≤ j ≤ i≤ n 이고 B 경우에는 0 ≤i≤ j ≤ k ≤ n 이다. 두 배열 모두 색인의 사전식 순서에 따라 연속적인 메모리 장소에 저장되어 있다고 가정한다. 이 때, 어떠한 함수 f1, f2, f3에 대해 LOC(A[i, j, k])=a0+f1(I)+f2(J)+f3(K)임을 보여라. LOC(B[i, j, k]) 도 그와 비슷한 방식으로 표현할 수 있을까?<br />
  10. 10. 6.<br />[M24] “4면체 배열” A[i, j, k]와 B[i, j, k]가 있다. A의 경우<br />에는 0 ≤ k ≤ j ≤ i≤ n 이고 B 경우에는 0 ≤i≤ j ≤ k ≤ n 이다. 두 배열 모두 색인의 사전식 순서에 따라 연속적인 메모리 장소에 저장되어 있다고 가정한다. 이 때, 어떠한 함수 f1, f2, f3에 대해 LOC(A[i, j, k])=a0+f1(I)+f2(J)+f3(K)임을 보여라. LOC(B[i, j, k]) 도 그와 비슷한 방식으로 표현할 수 있을까?<br />풀이) (a) LOC(A[I, J, K]) = LOC(A[0, 0, 0]) +<br />(b) LOC(B[I, J, K]) = LOC(B[0, 0, 0]) <br />
  11. 11. 6.<br />[M24] “4면체 배열” A[i, j, k]와 B[i, j, k]가 있다. A의 경우<br />에는 0 ≤ k ≤ j ≤ i≤ n 이고 B 경우에는 0 ≤i≤ j ≤ k ≤ n 이다. 두 배열 모두 색인의 사전식 순서에 따라 연속적인 메모리 장소에 저장되어 있다고 가정한다. 이 때, 어떠한 함수 f1, f2, f3에 대해 LOC(A[i, j, k])=a0+f1(I)+f2(J)+f3(K)임을 보여라. LOC(B[i, j, k]) 도 그와 비슷한 방식으로 표현할 수 있을까?<br />GG<br />우리..함께해요…!!<br />풀이) (a) LOC(A[I, J, K]) = LOC(A[0, 0, 0]) +<br />(b) LOC(A[I, J, K]) = LOC(A[0, 0, 0]) <br />
  12. 12. 9.<br />[22] 그림 13에 나온 것과 비슷하지만 그보다는 훨씬 큰<br />어떤 표가 있으며, 그것의 모든 링크들이 그 그림에 나온<br />것과 같은 방향으로 설정되어 있다고 하자. (즉, 모든 노드<br />들과 링크들에서 LINK(X) < X 이다.) 여러 링크 필드들을 <br />훑으면서 21세에서 23세 사이의 파란 눈 금발 여성을 모두 찾는 알고리즘을 설계하라. 단, 목록 FEMALE, A21, A22, A23, BLOND, BLUE 각각을 최대 한 번만 훑어서 모든 답을 찾아야 한다.<br />
  13. 13. BROWN<br />FEMALE<br />BLOND<br />GREEN<br />HAZEL<br />MALE<br />DARK<br />BLUE<br />RED<br />A21<br />A24<br />A23<br />A28<br />A22<br />PERSON[6]<br />P1<br />P2<br />PERSON[5]<br />G1. P1←FEMALE(HEAD)<br /> P2←A21(HEAD)<br /> P3←A22(HEAD)<br /> P4←A23(HEAD)<br /> P5←BLUE(HEAD)<br /> P6←BLOND(HEAD)<br />goto G2<br />PERSON[4]<br />P3<br />P6<br />PERSON[3]<br />PERSON[2]<br />P5<br />PERSON[1]<br />P4<br />=NULL<br />
  14. 14. BROWN<br />FEMALE<br />BLOND<br />GREEN<br />HAZEL<br />MALE<br />DARK<br />BLUE<br />RED<br />A21<br />A24<br />A23<br />A28<br />A22<br />PERSON[6]<br />P1<br />P2<br />PERSON[5]<br />G2. while ( P5 >P6 )<br /> P5←EYES(P5)<br /> if P5 < P6 then<br />goto G5<br /> else if P5 == P6 then<br />goto G3 <br />PERSON[4]<br />P3<br />P6<br />PERSON[3]<br />PERSON[2]<br />P5<br />PERSON[1]<br />P4<br />=NULL<br />
  15. 15. BROWN<br />FEMALE<br />BLOND<br />GREEN<br />HAZEL<br />MALE<br />DARK<br />BLUE<br />RED<br />A21<br />A24<br />A23<br />A28<br />A22<br />PERSON[6]<br />P1<br />P2<br />PERSON[5]<br />G5. P6←HAIR(P6)<br /> if P6 == ∧ then<br /> return FALSE<br /> else<br />goto G2<br />PERSON[4]<br />P3<br />PERSON[3]<br />P6<br />PERSON[2]<br />P5<br />PERSON[1]<br />P4<br />=NULL<br />
  16. 16. BROWN<br />FEMALE<br />BLOND<br />GREEN<br />HAZEL<br />MALE<br />DARK<br />BLUE<br />RED<br />A21<br />A24<br />A23<br />A28<br />A22<br />PERSON[6]<br />P1<br />P2<br />PERSON[5]<br />G2. while ( P5 >P6 )<br /> P5←EYES(P5)<br /> if P5 < P6 then<br />goto G5<br /> else if P5 == P6 then<br />goto G3 <br />PERSON[4]<br />P3<br />PERSON[3]<br />P6<br />PERSON[2]<br />P5<br />PERSON[1]<br />P4<br />=NULL<br />
  17. 17. BROWN<br />FEMALE<br />BLOND<br />GREEN<br />HAZEL<br />MALE<br />DARK<br />BLUE<br />RED<br />A21<br />A24<br />A23<br />A28<br />A22<br />PERSON[6]<br />P1<br />P2<br />PERSON[5]<br />G5. P6←HAIR(P6)<br /> if P6 == ∧ then<br /> return FALSE<br /> else<br />goto G2<br />PERSON[4]<br />P3<br />PERSON[3]<br />PERSON[2]<br />P5<br />PERSON[1]<br />P6<br />P4<br />=NULL<br />
  18. 18. BROWN<br />FEMALE<br />BLOND<br />GREEN<br />HAZEL<br />MALE<br />DARK<br />BLUE<br />RED<br />A21<br />A24<br />A23<br />A28<br />A22<br />PERSON[6]<br />P1<br />P2<br />PERSON[5]<br />G2. while ( P5 >P6 )<br />P5←EYES(P5)<br /> if P5 < P6 then<br />goto G5<br /> else if P5 == P6 then<br />goto G3<br />PERSON[4]<br />P3<br />PERSON[3]<br />PERSON[2]<br />PERSON[1]<br />P5<br />P6<br />P4<br />=NULL<br />
  19. 19. BROWN<br />FEMALE<br />BLOND<br />GREEN<br />HAZEL<br />MALE<br />DARK<br />BLUE<br />RED<br />A21<br />A24<br />A23<br />A28<br />A22<br />PERSON[6]<br />P1<br />P2<br />G3. while ( P4 > P6 )<br /> P4←A23(P4)<br /> while ( P3 > P6 )<br />P3←A22(P3)<br /> while ( P2 > P6 )<br /> P2←A21(P2)<br /> if P4 < P6 && P3 < P6<br /> && P2 < P6 then<br />goto G5<br /> else <br />goto G4<br />PERSON[5]<br />PERSON[4]<br />PERSON[3]<br />PERSON[2]<br />P3<br />PERSON[1]<br />P5<br />P6<br />P4<br />=NULL<br />
  20. 20. BROWN<br />FEMALE<br />BLOND<br />GREEN<br />HAZEL<br />MALE<br />DARK<br />BLUE<br />RED<br />A21<br />A24<br />A23<br />A28<br />A22<br />PERSON[6]<br />P1<br />P2<br />G3. while ( P4 > P6 )<br /> P4←A23(P4)<br /> while ( P3 > P6 )<br />P3←A22(P3)<br /> while ( P2 > P6 )<br /> P2←A21(P2)<br /> if P4 < P6 && P3 < P6<br /> && P2 < P6 then<br />goto G5<br /> else <br />goto G4<br />PERSON[5]<br />PERSON[4]<br />PERSON[3]<br />PERSON[2]<br />PERSON[1]<br />P5<br />P6<br /> P3 P4<br /> =NULL<br />
  21. 21. BROWN<br />FEMALE<br />BLOND<br />GREEN<br />HAZEL<br />MALE<br />DARK<br />BLUE<br />RED<br />A21<br />A24<br />A23<br />A28<br />A22<br />PERSON[6]<br />P1<br />G3. while ( P4 > P6 )<br /> P4←A23(P4)<br /> while ( P3 > P6 )<br /> P3←A22(P3)<br /> while ( P2 > P6 )<br />P2←A21(P2)<br /> if P4 < P6 && P3 < P6<br /> && P2 < P6 then<br />goto G5<br /> else <br />goto G4<br />PERSON[5]<br />PERSON[4]<br />PERSON[3]<br />PERSON[2]<br />PERSON[1]<br />P2<br />P5<br />P6<br /> P3 P4<br /> =NULL<br />
  22. 22. BROWN<br />FEMALE<br />BLOND<br />GREEN<br />HAZEL<br />MALE<br />DARK<br />BLUE<br />RED<br />A21<br />A24<br />A23<br />A28<br />A22<br />PERSON[6]<br />PERSON[5]<br />G4. while ( P1 > P6 )<br />P1←SEX(P1)<br /> if P1 == P6 then<br /> print *P6<br /> return TRUE<br />PERSON[4]<br />P1<br />PERSON[3]<br />PERSON[2]<br />PERSON[1]<br />P2<br />P5<br />P6<br /> P3 P4<br /> =NULL<br />
  23. 23. BROWN<br />FEMALE<br />BLOND<br />GREEN<br />HAZEL<br />MALE<br />DARK<br />BLUE<br />RED<br />A21<br />A24<br />A23<br />A28<br />A22<br />PERSON[6]<br />PERSON[5]<br />G4. while ( P1 > P6 )<br />P1←SEX(P1)<br /> if P1 == P6 then<br /> print *P6<br /> return TRUE<br />PERSON[4]<br />PERSON[3]<br />PERSON[2]<br />P1<br />PERSON[1]<br />P2<br />P5<br />P6<br /> P3 P4<br /> =NULL<br />
  24. 24. BROWN<br />FEMALE<br />BLOND<br />GREEN<br />HAZEL<br />MALE<br />DARK<br />BLUE<br />RED<br />A21<br />A24<br />A23<br />A28<br />A22<br />PERSON[6]<br />PERSON[5]<br />G4. while ( P1 > P6 )<br />P1←SEX(P1)<br /> if P1 == P6 then<br />print *P6<br /> return TRUE<br />PERSON[4]<br />PERSON[3]<br />PERSON[2]<br />PERSON[1]<br />P2<br />P5<br />P6<br />P1<br /> P3 P4<br /> =NULL<br />
  25. 25. 결국 P6 기준으로<br />모든 포인터가 같을 때값을 반환<br />이 알고리즘은 최적화 방법은 아니다.<br />모든 노드를 선형 탐색을 하기 때문에…?<br />최적화 방법은<br />TAOCP 3권 6.5절 2차키에 의한 조회<br />참고.<br />
  26. 26. 12.<br />[20] 단계 S7의 시작에서 VAL(Q0), VAL(P0), VAL(P1)<br />값들을 (13)에 쓰인 a, b, c 로 표현하라.<br />
  27. 27. 12.<br />[20] 단계 S7의 시작에서 VAL(Q0), VAL(P0), VAL(P1)<br />값들을 (13)에 쓰인 a, b, c 로 표현하라.<br />VAL(Q0) = c<br />VAL(P0) = b/a<br />VAL(P1) = d<br />알고리즘 비교해보시면 간단하게 알 수 있습니다.<br />
  28. 28. 13.<br />[22] 그림 14에서 직선적인 선형 목록 대신 순환 목록을 사용한 이유는 무엇일까? 순환 연결을 사용하지 않도록 알고리즘 S를 재작성하는 게 가능할까?<br />
  29. 29. 13.<br />[22] 그림 14에서 직선적인 선형 목록 대신 순환 목록을 사용한 이유는 무엇일까? 순환 연결을 사용하지 않도록 알고리즘 S를 재작성하는 게 가능할까?<br />순환 목록 사용 이유<br />“경계값” (Tail Node) 를 설정.<br />Tail Node 의 링크(리스트의 처음) 시작.<br />=> 편리하게 Tail Node 검사 가능<br />Ex) 그림 14 에서 Tail Node 의 row,col필드의 값은 모두 -1<br />알고리즘S 에서 행, 열 리스트의 마지막 검사는 <br />ROW(I) < 0 또는 COL(J) < 0<br />
  30. 30. 13.<br />[22] 그림 14에서 직선적인 선형 목록 대신 순환 목록을 사용한 이유는 무엇일까? 순환 연결을 사용하지 않도록 알고리즘 S를 재작성하는 게 가능할까?<br />알고리즘S 재작성 가능여부<br />단방향 리스트를 사용할 수는 있지만<br />알고리즘이 더욱 복잡해지며<br />메모리를 절약할 수도 없다.<br />비효율적<br />
  31. 31. 15.<br />[29] 알고리즘 S를 위한 MIXAL 프로그램을 작성하라. VAL 필드는 부동소수점이고, 그 필드들의 연산을 위해 MIX의 부동소수점 산술 연산자 FADD, FSUB, FMUL, FDIV를 사용할 수 있다고 가정할 것. 단순함을 위해, 피연산자들의 덧셈 또는 뺄셈에 의해 대부분의 유효숫자들이 취소된다면 FADD나 FSUB가 0을 돌려준다고 가정한다. 즉, 단계 S7의 “VAL(P1)=0” 판정을 그대로 사용해도 안전하다고 가정하는 것이다. 부동소수점 연산들은 rA만 사용한다(rX는 사용하지 않는다).<br />
  32. 32. 24.<br />[25] (희소 배열 요령.) 커다란 배열을 임의 접근으로 사용해야 하지만, 그 행렬의 아주 많은 성분들을 실제로 참조하지 않을 것이라고 가정하자. 임의의 성분 A[k]에 처음 접근했을 때 그것을 0으로 설정하되, 모든 장소들을 미리 0으로 초기화 하는데 시간을 소비하지는 않고자 한다. 임의의 k가 주어졌을 때, 실제 초기 메모리 내용들에 대해 어떠한 것도 가정하지 않고, 배열 접근 당 오직 고정된 적은 수의 추가적인 연산들만 사용해서 해당 성분 A[k]를 신뢰성 있게 읽고 쓰는 것이 어떻게 가능할지 설명하라.<br />
  33. 33. 질문이 너무 길다.<br />무슨 소리지………?<br />
  34. 34. 24.<br />[25] (희소 배열 요령.) 커다란 배열을 임의 접근으로 사용해야 하지만, 그 행렬의 아주 많은 성분들을 실제로 참조하지 않을 것이라고 가정하자. 임의의 성분 A[k]에 처음 접근했을 때 그것을 0으로 설정하되, 모든 장소들을 미리 0으로 초기화 하는데 시간을 소비하지는 않고자 한다. 임의의 k가 주어졌을 때, 실제 초기 메모리 내용들에 대해 어떠한 것도 가정하지 않고, 배열 접근 당 오직 고정된 적은 수의 추가적인 연산들만 사용해서 해당 성분 A[k]를 신뢰성 있게 읽고 쓰는 것이 어떻게 가능할지 설명하라.<br />이것은 희소 배열이다.<br />
  35. 35. 24.<br />[25] (희소 배열 요령.) 커다란 배열을 임의 접근으로 사용해야 하지만, 그 행렬의 아주 많은 성분들을 실제로 참조하지 않을 것이라고 가정하자. 임의의 성분 A[k]에 처음 접근했을 때 그것을 0으로 설정하되, 모든 장소들을 미리 0으로 초기화 하는데 시간을 소비하지는 않고자 한다. 임의의 k가 주어졌을 때, 실제 초기 메모리 내용들에 대해 어떠한 것도 가정하지 않고, 배열 접근 당 오직 고정된 적은 수의 추가적인 연산들만 사용해서 해당 성분 A[k]를 신뢰성 있게 읽고 쓰는 것이 어떻게 가능할지 설명하라.<br />A[k]에 처음 접근하면 <br />0으로 초기화하고<br />
  36. 36. 24.<br />[25] (희소 배열 요령.) 커다란 배열을 임의 접근으로 사용해야 하지만, 그 행렬의 아주 많은 성분들을 실제로 참조하지 않을 것이라고 가정하자. 임의의 성분 A[k]에 처음 접근했을 때 그것을 0으로 설정하되,모든 장소들을 미리 0으로 초기화 하는데 시간을 소비하지는 않고자 한다. 임의의 k가 주어졌을 때, 실제 초기 메모리 내용들에 대해 어떠한 것도 가정하지 않고, 배열 접근 당 오직 고정된 적은 수의 추가적인 연산들만 사용해서 해당 성분 A[k]를 신뢰성 있게 읽고 쓰는 것이 어떻게 가능할지 설명하라.<br />시간은 상관 X<br />
  37. 37. 24.<br />[25] (희소 배열 요령.) 커다란 배열을 임의 접근으로 사용해야 하지만, 그 행렬의 아주 많은 성분들을 실제로 참조하지 않을 것이라고 가정하자. 임의의 성분 A[k]에 처음 접근했을 때 그것을 0으로 설정하되, 모든 장소들을 미리 0으로 초기화 하는데 시간을 소비하지는 않고자 한다. 임의의 k가 주어졌을 때, 실제 초기 메모리 내용들에 대해 어떠한 것도 가정하지 않고,배열 접근 당 오직 고정된 적은 수의 추가적인 연산들만 사용해서 해당 성분 A[k]를 신뢰성 있게 읽고 쓰는 것이 어떻게 가능할지 설명하라.<br />A[k]미리 초기화 X<br />쓰레기 일수도 있다.<br />
  38. 38. 24.<br />[25] (희소 배열 요령.) 커다란 배열을 임의 접근으로 사용해야 하지만, 그 행렬의 아주 많은 성분들을 실제로 참조하지 않을 것이라고 가정하자. 임의의 성분 A[k]에 처음 접근했을 때 그것을 0으로 설정하되, 모든 장소들을 미리 0으로 초기화 하는데 시간을 소비하지는 않고자 한다. 임의의 k가 주어졌을 때, 실제 초기 메모리 내용들에 대해 어떠한 것도 가정하지 않고, 배열 접근 당 오직 고정된 적은 수의 추가적인 연산들만 사용해서 해당 성분 A[k]를 신뢰성 있게 읽고 쓰는 것이 어떻게 가능할지 설명하라.<br />A[k]값이 유효할 수 있는<br />방법을 설명하시오.<br />
  39. 39. 임의의 희소 배열 A알수 없는 값<br />같은 크기의 검증용 배열 V알수없는 값<br />사용된 장소들의 목록L알수없는 값<br />목록 L 의 요소 개수n 0<br />임의의 값 k에 대해 A[k]접근시<br />if 0 ≤ V[k] ≤ n && L[V[k]] == k then<br /> return TRUE<br />else<br />V[k] ← n<br />L[n]← k<br />A[k]← 0<br />n ← n+1<br />return FALSE<br />
  40. 40. k1<br />… …<br />A<br />… …<br />V<br />…<br />L<br />n 0 <br />임의의 값 k1에 대해 A[k1]접근시<br />if 0 ≤ V[k1] ≤ n && L[V[k1]] == k1then<br /> return TRUE<br />else<br />V[k1] ← n<br />L[n]← k1<br />A[k1] ← 0<br />n ← n+1<br />return FALSE<br />
  41. 41. k1<br />… …<br />A<br />0<br />… …<br />V<br />0<br />…<br />L<br />k1<br />n 1<br />임의의 값 k1에 대해 A[k1]접근시<br />if 0 ≤ V[k1] ≤ n && L[V[k1]] == k1then<br /> return TRUE<br />else<br />V[k1] ← n<br />L[n]← k1<br />A[k1] ← 0<br />n ← n+1<br />return FALSE<br />
  42. 42. k1<br /> k2<br />… …<br />A<br />0<br />… …<br />V<br />0<br />…<br />L<br />k1<br />n 1 <br />임의의 값 k2에 대해 A[k2]접근시<br />if 0 ≤ V[k2] ≤ n&& L[V[k2]] == k2then<br /> return TRUE<br />else<br />V[k2] ← n<br />L[n]← k2<br />A[k2] ← 0<br />n ← n+1<br />return FALSE<br />
  43. 43. k1<br /> k2<br />… …<br />A<br />0<br />0<br />… …<br />V<br />0<br />1<br />…<br />L<br />k1<br />k2<br />n 2<br />임의의 값 k2에 대해 A[k2]접근시<br />if 0 ≤ V[k2] ≤ n && L[V[k2]] == k2then<br /> return TRUE<br />else<br />V[k2] ← n<br />L[n]← k2<br />A[k2] ← 0<br />n ← n+1<br />return FALSE<br />
  44. 44. k1<br /> k2<br />… …<br />A<br />0<br />0<br />… …<br />V<br />0<br />1<br />…<br />L<br />k1<br />k2<br />n 2 <br />임의의 값 k1에 대해 A[k1]접근시<br />if 0 ≤ V[k1] ≤ n&& L[V[k1]] == k1then<br /> return TRUE<br />else<br />V[k1] ← n<br />L[n]← k2<br />A[k1] ← 0<br />n ← n+1<br />return FALSE<br />
  45. 45. k1<br /> k2<br />… …<br />A<br />0<br />0<br />… …<br />V<br />0<br />1<br />…<br />L<br />k1<br />k2<br />n 2 <br />임의의 값 k1에 대해 A[k1]접근시<br />if 0 ≤ V[k1] ≤ n && L[V[k1]] == k1then<br />return TRUE<br />else<br />V[k1] ← n<br />L[n]← k2<br />A[k1] ← 0<br />n ← n+1<br />return FALSE<br />
  46. 46. k1<br /> k2<br />… …<br />A<br />0<br />0<br />… …<br />V<br />0<br />1<br />…<br />L<br />k1<br />k2<br />n 2 <br />임의의 값 k2에 대해 A[k2]접근시<br />if 0 ≤ V[k2] ≤ n&& L[V[k2]] == k2then<br /> return TRUE<br />else<br />V[k2] ← n<br />L[n]← k2<br />A[k2] ← 0<br />n ← n+1<br />return FALSE<br />
  47. 47. k1<br /> k2<br />… …<br />A<br />0<br />0<br />… …<br />V<br />0<br />1<br />…<br />L<br />k1<br />k2<br />n 2 <br />임의의 값 k2에 대해 A[k2]접근시<br />if 0 ≤ V[k2] ≤ n && L[V[k2]] == k2then<br />return TRUE<br />else<br />V[k2] ← n<br />L[n]← k2<br />A[k2] ← 0<br />n ← n+1<br />return FALSE<br />
  48. 48. 끝<br />

×