탐색(Search)λž€? -> 'λ§Žμ€ μ–‘μ˜ 데이터 μ€‘μ—μ„œ μ›ν•˜λŠ” 데이터λ₯Ό μ°ΎλŠ” κ³Όμ •'

 

       -λŒ€ν‘œμ μΈ 탐색은 DFS, BFS

 

자료ꡬ쑰(Data Struct)λž€? -> '데이터λ₯Ό ν‘œν˜„ν•˜κ³  κ΄€λ¦¬ν•˜κ³  μ²˜λ¦¬ν•˜κΈ° μœ„ν•œ ꡬ쑰'

 

       -λŒ€ν‘œμ μΈ 자료ꡬ쑰 μŠ€νƒκ³Ό 큐

 

<μŠ€νƒ> - First in Last out & Last in First out

              νŒŒμ΄μ¬μ—μ„œ μŠ€νƒμ„ μ΄μš©ν•  λ•Œμ—λŠ” λ³„λ„μ˜ 라이브러리λ₯Ό μ‚¬μš©ν•  ν•„μš”κ°€ μ—†λ‹€!

              κΈ°λ³Έ λ¦¬μŠ€νŠΈμ—μ„œ append() 와 pop()λ©”μ„œλ“œλ₯Ό μ΄μš©ν•˜λ©΄ μŠ€νƒ μžλ£Œκ΅¬μ‘°μ™€ λ™μΌν•˜κ²Œ λ™μž‘ν•œλ‹€.

              append()λ©”μ„œλ“œλŠ” 리슀트의 κ°€μž₯ λ’€μͺ½μ— 데이터λ₯Ό μ‚½μž…ν•˜κ³ , pop() λ©”μ„œλ“œλŠ” 리슀트의 κ°€μž₯ λ’€μͺ½μ—μ„œ 데이터λ₯Ό κΊΌλ‚΄κΈ° λ•Œλ¬Έμ΄λ‹€.

 

<큐> - First in First out

           νŒŒμ΄μ¬μ—μ„œ 큐λ₯Ό μ΄μš©ν• λ•Œμ—λŠ” collections λͺ¨λ“ˆμ—μ„œ μ œκ³΅ν•˜λŠ” deque 자료ꡬ쑰λ₯Ό ν™œμš©ν•˜λ©΄ λœλ‹€. dequeλŠ” double end queue둜 

           μŠ€νƒκ³Ό 큐의 μž₯점을 λͺ¨λ‘ μ±„νƒν•œ 것이닀.

 

μž¬κ·€ν•¨μˆ˜(Recursive Fuction) -> '자기 μžμ‹ μ„ λ‹€μ‹œ ν˜ΈμΆœν•˜λŠ” ν•¨μˆ˜'

 

 

 

DFS

: Depth first Search, 깊이 μš°μ„  탐색이라도고 λΆ€λ₯΄λ©°, κ·Έλž˜ν”„μ—μ„œ 기은 뢀뢄을 μš°μ„ μ μœΌλ‘œ νƒμƒ‰ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜ 이닀.

κ·Έλž˜ν”„λŠ” 인접행렬과 인접 λ¦¬μŠ€νŠΈκ°€ μžˆλŠ”λ° νŒŒμ΄μ¬μ—μ„œλŠ” λ‘˜λ‹€ list둜 ν‘œν˜„ κ°€λŠ₯ν•œμ μ„ κΈ°μ–΅ν•˜μž.

 

<μž‘λ™λ°©μ‹>

1. 탐색 μ‹œμž‘ λ…Έλ“œλ₯Ό μŠ€νƒμ— μ‚½μž…ν•˜κ³  λ°©λ¬Έ 처리λ₯Ό ν•œλ‹€.

2. μŠ€νƒμ˜ μ΅œμƒλ‹¨ λ…Έλ“œμ— λ°©λ¬Έν•˜μ§€ μ•Šμ€ 인접 λ…Έλ“œκ°€ 있으면 κ·Έ 인접 λ…Έλ“œλ₯Ό μŠ€νƒμ— λ„£κ³  λ°©λ¬Έ 처리λ₯Ό ν•œλ‹€. λ°©λ¬Έν•˜μ§€ μ•Šμ€ 인접 λ…Έλ“œκ°€ μ—†μœΌλ©΄ μŠ€νƒμ—μ„œ μ΅œμƒλ‹¨ λ…Έλ“œλ₯Ό κΊΌλ‚Έλ‹€.

3. 2번의 과정을 더 이상 μˆ˜ν–‰ν•  수 없을 λ•ŒκΉŒμ§€ λ°˜λ³΅ν•œλ‹€.

 

DFSλŠ” μ›λ¦¬μƒμœΌλ‘  μŠ€νƒμ„ μ΄μš©ν•˜μ§€λ§Œ μ‹€μ œ κ΅¬ν˜„μƒμ—λŠ” κ·Έλƒ₯ μž¬μ‰¬ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜λ©΄ λœλ‹€.

 

BFS

: Breath Frist Search, λ„ˆλΉ„ μš°μ„  νƒμƒ‰μ΄λΌλŠ” 의미λ₯Ό 가진닀. μ‰½κ²Œ 말해 κ°€κΉŒμš΄ λ…Έλ“œλΆ€ν„° νƒμƒ‰ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜

μ„ μž…μ„ μΆœ 방식인 큐 자료ꡬ쑰λ₯Ό μ΄μš©ν•˜λ©΄ λœλ‹€λŠ”μ  κΈ°μ–΅.

 

<μž‘λ™λ°©μ‹>

1. 탐색 μ‹œμž‘ λ…Έλ“œλ₯Ό 큐에 μ‚½μž…ν•˜κ³  λ°©λ¬Έ 처리λ₯Ό ν•œλ‹€

2. νμ—μ„œ λ…Έλ“œλ₯Ό κΊΌλ‚΄ ν•΄λ‹Ή λ…Έλ“œμ˜ 인접 λ…Έλ“œμ€‘μ—μ„œ λ°©λ¬Έν•˜μ§€ μ•Šμ€ λ…Έλ“œλ₯Ό λͺ¨λ‘ 큐에 μ‚½μž…ν•˜κ³  방문처리λ₯Ό ν•œλ‹€.

3. 2번의 과정을 더 이상 μˆ˜ν–‰ν•  수 없을 λ•ŒκΉŒμ§€ λ°˜λ³΅ν•œλ‹€.