코드 13-9
class Element:
def __init__(self, v, w, _from):
# 가중치를 키로 사용합니다.
self.w = w
self.v = v
self._from = _from
class MinHeap:
MAX_ELEMENTS = 200
def __init__(self):
self.arr = [None for i in range(self.MAX_ELEMENTS)]
self.heapsize = 0
# 정점이 arr에 위치한 현재 인덱스
self.pos = [None for i in range(self.MAX_ELEMENTS)]
코드 13- 9에서 Element 클래스를 보면 세 가지 멤버를 가지고 있습니다. 먼저 키로 사용할 에지의 가중치입니다. v는 트리 밖에 있는 정점을 의미하며, _from은 자라나고 있는 트리 정점 집합의 정점입니다. 즉, weight(v, _from)=w가 됩니다. MinHeap 클래스의 생성자를 보면 멤버인 arr과 heapsize와 함께 pos라는 배열이 있습니다. 알고 싶은 것은 가중치가 가장 작은 에지의 트리 밖 정점입니다. arr 내에서는 가중치에 따라 배치되어 있지요. 그러므로 트리 밖 정점의 arr 내 인덱스를 저장하는 데 pos를 사용합니다. 이 pos 역할만 이해했다면 나머지는 간단합니다.