디닉 알고리즘

2022. 12. 14. 01:25·BackEnd/알고리즘 공부

네트워크 유량 문제를 해결하기 위해서는 에드몬드 카프 알고리즘을 공부했다. BFS를 이용해 문제를 해결핬다. 하지만 에드몬드 카프 알고리즘의 시간복답도는 O(V*E^2)이다. 이럴 경우 간선이 많아지면 문제 해결 시간이 오래걸린다는 단점이 있다. 그래서 디닉 알고리즘이라는 시간 복잡도가 O(V^2*E)의 알고리즘이 있다. 오늘은 이 알고리즘을 공부해 볼려고 한다.

디닉 알고리즘(Dinic’s Algorithm) 설명

위 그래프는 동아리 시간에 배운 그래프이다. 디닉 알고리즘을 수행 하기 위해서는 먼저 레벨 그래프 부터 만들어야 한다.

 

레벨 그래프

  시작 정점은 언제나 0이고  그와 인접한 정점은 1 또 인접한 정점은 2 로 만     들어진다. 
  • 해당 정점은 아직 레벨을 부여 받지 않은 정점이어야 한다.
  • 현재에서 다음으로 유량이 흐를 수 있어야 한다.

차단 유량

위 그림 처럼 레벨 그래프가 만들어진다. 파란색 간선이 차단 유량이라고 한다.

위 그래프는 유량을 흘러보낸 것이다. 이럴 경우 유량의 총합은 14이다.

 

반대 방향 유량

에드몬드 카프 알고리즘에서 그랬듯이 유량이 생기면 그에 반대 방향으로 흐르는 유량이 생긴다. 이 상태에서 다시 유량이 흐르면

이 상태로 유량이 흐를 수 있다. 5의 유량이 더 흐를 수 있는 것을 발견 했으므로 총 19의 유량이 흐른다.

모든 정점이 연결 할 수 없을 때 끝난다. 이 알고리즘의 시간 복잡도는 O(V^2E)이다. 즉 간선이 많을 때도 사용 할 수 있다.

'BackEnd > 알고리즘 공부' 카테고리의 다른 글

구간 합 구하기(JAVA)  (0) 2022.12.24
LCS 구하기  (0) 2022.12.14
에드몬드 카프 알고리즘  (0) 2022.12.14
강한 결합 요소를 찾는 알고리즘  (2) 2022.12.14
세그먼트 트리  (0) 2022.12.14
'BackEnd/알고리즘 공부' 카테고리의 다른 글
  • 구간 합 구하기(JAVA)
  • LCS 구하기
  • 에드몬드 카프 알고리즘
  • 강한 결합 요소를 찾는 알고리즘
인프라 감자
인프라 감자
  • 인프라 감자
    삶은 인프라
    인프라 감자
  • 전체
    오늘
    어제
    • 분류 전체보기 (243)
      • 클라우드&인프라 (28)
        • 인프라 공부 (4)
        • AWS 구조와 서비스 (18)
        • 클라우드 공부 (4)
        • Terraform (2)
      • AWS Cloud School (13)
        • project (5)
        • Linux, Network (6)
        • Docker (2)
      • BackEnd (162)
        • JAVA 공부 (15)
        • 알고리즘 공부 (71)
        • MySQL 문제 풀기 (8)
        • 스프링 핵심 원리 - 기본편 (18)
        • 스프링 MVC 1편 (4)
        • 자바 ORM 표준 JPA 프로그래밍 (21)
        • 실전! 스프링 부트와 JPA 활용1 (8)
        • 실전! 스프링 부트와 JPA 활용2 (5)
        • 스프링 데이터 JPA (8)
        • Querydsl (4)
      • 혼자하는 프로젝트 (32)
        • 배달의 민족 클론코딩 (7)
        • 나만의 프로젝트 (10)
        • 스프링 부트로 구현한 웹 (15)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Email
    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    자동 배포
    상속
    조합
    다이나믹 프로그래밍
    백트래킹
    자바
    네트워크 기본 용어
    유니온 파인드
    querydsl
    스프링 핵심 원리-기본편
    dp
    디팬스 게임
    프로그래머스
    완전탐색
    이것이 자바다
    정렬
    VPN
    쿼드 압축
    중첩 선언
    linux
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
인프라 감자
디닉 알고리즘
상단으로

티스토리툴바