정점과 간선을 이용해 연결되어 있는 원소 사이 다대다 관계 표현한 자료구조
2차원 배열 이용, 간선을 중심으로 그래프 표현
1) 배열에 출발, 도착노드를 저장하여 에지 표현 = A[N][2]
2) 간선에 가중치가 있는 경우 행을 3개로 늘려 3번째 행에 가중치를 저장 = A[N][3]
특정 노드와 관련되어 있는 에지를 탐색하기 불편
2차원 배열을 자료구조로 이용하, 노드 중심으로 그래프 표현 ( N * N )
ArrayList 이용, 노드 중심으로 그래프 표현
에지리스트 - 인접리스트 - 탐색 - DFS,BFS
완전 탐색 기법
: 그래프의 시작 노드에서 출발하여 탐색할 한 쪽 분기를 정해
최대 깊이까지 탐색을 마친 후 다른 분기 쪽으로 이동하여 다시 탐색하는 알고리즘
1) DFS를 시작할 노드 정한 후 사용할 자료구조 초기화 하기
- 인접 리스트로 그래프 표현하기
- 방문 배열 초기화 하기
- Stack에 시작노드 삽입하기
2) Stack에서 노드를 꺼낸 후 꺼낸 노드의 인접 노드를 다시 Stack에 삽입하기
- Stack에서 pop 연산을 수행 하여 노드를 꺼낸 후 꺼내 노드를 탐색 순서에 기입
- 인접 노드를 Stack에 삽입하여 방문 배열 체크 (ex. Static boolean isVistied[])
- Stack pop - 방문 배열 F, Stack push - 방문 배열 T
3) Stack에 값이 없을 때 까지 반복 하기 (isEmpty())
- 1, 2번 과정을 Stack에 값이 없을 때 까지 반복하기
- 이미 다녀간 노드는 방문 배열을 바탕으로 재삽입 X
완전 탐색 기법
: 그래프의 시작 노드에서 출발하여 시작 노드를 기준으로
가까운 노드를 먼저 방문하면서 탐색하는 알고리즘
: 목표 노드에 도착하는 경로가 여러개일 때 최단 경로 보장
1) BFS를 시작할 노드 정한 후 사용할 자료구조 초기화 하기
- 인접 리스트로 그래프 표현하기
- 방문 배열 초기화 하기
- Queue에 시작노드 삽입하기
2) Queue에서 노드를 꺼낸 후 꺼낸 노드의 인접 노드를 다시 Queue에 삽입(En-Queue)하기
- Queue에서 노드를 꺼내면서 대상 노드의 인접 노드를 Queue에 삽입하기
- 노드를 Queue에 삽입하며 방문 배열 체크 (ex. Static boolean isVistied[])
- Queue 에서 노드를 꺼내면서 탐색 순서에 꺼낸 노드 기록
3) Queue에 값이 없을 때 까지 반복 하기 (isEmpty())
- 1, 2번 과정을 Queue에 값이 없을 때 까지 반복하기
- 이미 다녀간 노드는 방문 배열을 바탕으로 재삽입 X