그래프 2

[알고리즘/Algorithm] 다양한 그래프 이론 알고리즘

이전 포스팅인 DFS/BFS와 최단 경로에서 다룬 내용도 그래프 알고리즘의 한 유형이다. 문제를 접했을 때 서로 다른 개체가 연결되어 있다는 이야기를 들으면 가장 먼저 그래프 알고리즘을 떠올려야 한다. 그래프 알고리즘에 앞서 트리 자료구조에 대해 간략히 짚고 넘어가겠다. 트리는 그래프의 일종으로 여러 노드가 한 노드를 가리킬 수 없는 구조이다. 그래프 트리 방향성 방향 그래프 혹은 무방향 그래프 방향 그래프 순환성 순환 및 비순환 비순환 루트 노드 존재하지 않음 존재함 노드간 관계성 부모와 자식 관계 없음 부모와 자식 관게 모델 종류 네트워크 모델 계층 모델 Graph Algorithm 그래프는 주로 두 가지 방식으로 구현한다. 인접 행렬 (Adjacency Matrix) : 2차원 배열 사용 메모리 공..

[알고리즘/Algorithm] 그래프 탐색을 위한 DFS/BFS

탐색은 많은 양의 데이터 중 원하는 데이터를 찾는 과정으로 그래프나 트리 등의 자료구조에서 자주 다룬다. 대표적인 탐색 알고리즘으로 DFS와 BFS가 있고, 이를 확실히 이해하려면 스택과 큐가 뭔지 알아야 한다. 스택과 큐의 핵심 함수는 삽입(push)과 삭제(pop)다. 따라서 항상 오버플로와 언더플로를 고려해야 한다. overflow : 저장 공간을 벗어나 데이터가 넘쳐흐르는 상황 underflow : 데이터가 들어 있지 않은 상태에서 삭제 연산을 수행하는 상황 Stack LIFO (Last In First Out) : 후입선출로 접시를 쌓는 모습을 연상하면 된다. 깨끗이 닦은 접시를 쌓아두면 맨 위 접시부터 사용한다. Queue FIFO (First In First Out) : 선입선출로 식당에 줄..