큐는 연산의 결과로 먼저 들어간 데이터가 먼저 나오지만 우선순위 큐는 다르다.
들어간 순서에 상관 없이 우선순위가 높은 데이터가 먼저 나온다.
초기 상태의 공백 큐는 저장된 원소가 없으므로 front와 rear를 -1로 설정한다.
rear = n-1이면 포화상태
배열의 처음과 끝이 연결되어 있다고 생각하는 것
초기 공백 상태일 때 front와 rear값이 0
공백 상태 조건 front = rear
포화 상태 조건 (rear+1) % n = front
삽입 rear = (rear+1) % n
삭제 front = (front+1) % n
큐의 양쪽 끝에서 삽입과 삭제가 모두 발생할 수 있는 큐.
스택과 큐의 성질을 모두 가지고 있다.
작업 버퍼 큐, 프로세스 스케줄링, 대기 행렬을 모델링하는 시뮬레이션(큐잉이론)에서 사용한다.
비선형 자료구조 중에서 계층관계를 가진 계층형 자료구조
모든 노드가 2개의 서브 트리를 가지고 있는 트리
높이가 5인 포화 이진트리의 노드 수 = 31개
레벨 1부터 k-1까지 노드가 채워져 있고 마지막 k에서는 왼쪽부터 오른쪽으로 노드가 순서대로 채워져 있는 이진트리
spanning tree : 그래프의 모든 정점을 포함하는 트리 형태의 서브 그래프
Minimum spanning tree : 스패닝 트리 중에서 간선의 가중치 합이 가장 작은 스패닝 트리
무방향 연결 그래프가 주어질 때, 최소 스패닝 트리라고 부르는 서브 그래프를 찾는 알고리즘.
유니온 파인드 자료구조를 사용한다.
모든 간선을 끊어 놓는다.
가중치 순으로 간선을 정렬한다.
정렬된 간선을 순서대로 선택한다.
선택한 간선의 두 정점이 연결되어 있지 않으면, 해당 간선을 최소 스패닝 트리에 포함 시키고 두 정점을 연결한다.
3, 4 반복
간선 E개 정렬 = O(elog₂e)
union-find를 통한 vertex 비교 O(V)
따라서 O(elog₂e)
Edge 정렬이 적을수록 빠르다.
예시 그래프
임의의 정점을 선택하여 비어있는 T에 포함시킨다. T is tree
T에 있는 노드와 T에 없는 노드 사이의 간선 중 가중치가 최소인 간선을 찾는다.
찾은 간선이 연결하는 두 노드 중, T에 없는 노드를 T에 포함시킨다.
모든 노드가 T에 포함될 때 까지 2,3을 반복한다.
주 반복문이 정점의 수 n만큼 반복하고, 내부 반복문이 n번 반복하므로 O(n^2)
그래프에 간선이 많이 존재하는 ‘밀집 그래프(Dense Graph)’ 의 경우는 Prim 알고리즘이 적합하다.
최대힙, 최소힙
힙소트
연결되어있는 원소간의 관계를 표현하는 자료구조
연결할 객체를 나타내는 정점과 객체를 연결하는 간선의 집합으로 구성된다.
그래프 G를 G=(V,E)로 정의하는데 V는 정점들의 집합, E는 간선들의 집합이다.
시작 정점에서 한 방향으로 갈 수 있는 가장 먼 경로까지 깊이 탐색하다가 더 이상 갈 곳이 없으면 가장 마지막에 만났던 갈림길 간전이 있는 정점으로 되돌아와서 다른 방향의 간선으로 재탐색
시작 정점에서 인접한 정점들을 차례로 방문한 후 방문했던 정점을 다시 시작점으로 하여 인접한 정점들을 차례로 방문하는 방법.
가까운 정점을 먼저 방문하고 멀리있는 정점들은 나중에 방문하는 순회방법