은은하게 코드 뿌시기

알고리즘 - 탐색 (DFS/BFS/이진탐색/그리디) 본문

알고리즘

알고리즘 - 탐색 (DFS/BFS/이진탐색/그리디)

은은하게미친자 2022. 10. 1. 19:04
728x90
  1. 탐색
    1. 탐색종류
      1. DFS, 깊이우선탐색
      2. BFS, 너비우선탐색
      3. 이진탐색, 바이너리서치
      4. 그리디 알고리즘, 탐욕법
    2. DFS (Depth First Search) : 깊이 우선 탐색
      1. (노드수V+에지수E),
      2. 그래프 완전 탐색기법-  단절점,단절선,사이클,위상정렬 등
      3. 시작 노드에서 출발해서 한쪽분기를 정하여 최대 깊이까지 탐색을 마친후 다른쪽 분기로 이동하여 다시탐색을 수행하는 알고리즘 입니다.
      4. 구현방식
        1. 재귀함수/ Stack(FILO)자료구조이용
        2. 인접리스트(=그래프) , 노드방문여부배열 
          1. 1 꺼내서 인접리스트확인
          2. 꺼낸 인접리스트 (방문하지않았을경우!) 스택넣기 , 1방문배열체크
          3. 다녀간 노드없을때까지 방문!
    3. BFS (Breadth First Search) : 너비 우선 탐색
      1. (노드수V+에지수E)
      2. 그래프를 완전 탐색 
      3. 시작노드에서 가까운 노드를 먼저 방문하면서 탐색
        1. 목표노드에 도착하는 경로가 여러개일떄 최단경로 보장
      4. 구현방식
        1. Queue(FIFO)자료구조이용
        2. 인접리스트, 노드방문여부 배열
          1. 첫번째 노드에 값을 배열 체크 하고 큐에 등록, 1번 방문배열에체크
          2. 1번노드의 인접 리스트를  (방문 하지않은 노드라면 )큐에 등록된 노드를 등록,(뒤에 쌓임) 방문배열에 체크
          3. 다녀간 노드 없을까지 방문
    4. 이진탐색 : 바이너리 서치
      1. logN
      2. 타깃 데이터를 탐색 , 중앙값 비교를 통한 대상 축소방식
      3. 데이터가 정렬되있는 상태에서 원하는 찾아내는 알고리즘 
        1. 데이터의 중앙값과 찾고자하는 값을 비교해서 절반씩 줄이면서 대상을 찾음.
      4. 구현방법
        1.  (오름차순기준)
        2. 현재데이터에서 중앙값을 선택함
        3. 타겟 데이터와 중앙값을 비교하여 , 값이 속하지 않는 부분은 검색을 하지않는다.
        4. 반복
    5. 그리디 알고리즘 : 탐욕법
      1. 현재상테에서 보는 현택지중 최선의 선택지가 전체 선택지중 최선의 선택지라고 가정하는 알고리즘
      2. 항상 최적의 값을 보장하지 않음.
      3. 구현방법
        1. 현재상태에서 가장 최선이라 생각되는 값을 선택
        2. 현재 선택된 값이 제약조건에 벗어나지 않는 지 검사
        3. 전체 문제 에 답인지 검사 아니면 다시검사.
        4. 답나올때 까지 검사.
728x90
Comments