더북(TheBook)

코드 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 클래스의 생성자를 보면 멤버인 arrheapsize와 함께 pos라는 배열이 있습니다. 알고 싶은 것은 가중치가 가장 작은 에지의 트리 밖 정점입니다. arr 내에서는 가중치에 따라 배치되어 있지요. 그러므로 트리 밖 정점의 arr 내 인덱스를 저장하는 데 pos를 사용합니다. 이 pos 역할만 이해했다면 나머지는 간단합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.