본문 바로가기

알고리즘18

기말 Greedy_approach 정리 Greedy algorithm : Make a sequence of choices, each of which simply looks the best at the moment 선택들 중에서 그 순간 가장 좋아보이는 선택을 함. 대표적인 그리디 알고리즘의 예시는 '동전 고르기' . ex) 730 원을 채우기 위해 동전을 선택하자. Greedy approach vs Dynamic programming -최적화 문제를 푸는데 사용(Solve optimization problems) -그리디 알고리즘은 다이나믹 프로그래밍과 달리 문제를 작은 부분 문제로(sub-problems) 나뉘어지지 않음. 지역적 최적화 선택을 하면 재고려하지 않음 선택은 과거나 미래 선택에 영향을 미치지 않음 최적화인지는 증명해야함(pro.. 2020. 6. 24.
강한 결합 요소(Strongly Connected Component) ※다음 포스팅은 나동빈님 블로그를 보고 포스팅한 것입니다. https://blog.naver.com/ndb796/221236952158 26. 강한 결합 요소(Strongly Connected Component) 강한 결합 요소란 그래프 안에서 '강하게 결합된 정점 집합'을 의미합니다. 서로 긴밀하게 연결되어 있다고... blog.naver.com 강한 결합 요소란 그래프 안에서 '강하게 결합된 노드의 정점 집합' 라는 의미 입니다. 서로 강하게 연결되어 있다고 하여 강한 결합 요소입니다. 이는 SCC 알고리즘이라고 불리는 데요. SCC 는 '같은 SCC 에서 선택한 두 정점은 서로에게 도달이 가능하다' 는 특징이 있습니다. 다음 그래프에서 SCC 를 구하면 다음과 같습니다. 집합에 속하는 정점끼리 서로.. 2020. 6. 13.
위상정렬(Topology Sort) 위상 정렬(Topology Sort) 는 순서가 정해져있는 작업을 차례로 수행할 때 순서를 결정해주기 위해 사용되는 알고리즘입니다. 예시를 바로 볼까요. 다음과 같이 할 일 루틴이 있다고 합시다. 청소나 블로그 작성은 어느것을 먼저 수행하든지 상관이 없지만 점심은 강의를 복습하고 나서야 할 수 있습니다. 이처럼 한 단계를 수행하기 전에 해야하는, 즉 화살표의 개수(조건)를 '진입 차수' 라고 합니다. 이러한 조건들에 부합하는 일직선이 순서를 찾는것이 위상정렬입니다. 출근 -> 청소 -> 블로그 작성 -> 강의듣기 -> 강의 복습 -> 점심먹기 위와 같이 정렬을 수행할 수 있습니다. 그리고 다양한 답이 존재합니다. 그렇기 때문에 더욱 매력적인 알고리즘이라고 할 수 있습니다. 또 위상정렬을 DAG(Direc.. 2020. 6. 12.
플로이드와샬 알고리즘(FloydWarShall) 안녕하세요. 옆집컴공생입니다. 오늘은 플로이드와샬 알고리즘(Floydwarshall) 에 대해 알아볼게요. 저번에 포스팅했던 다익스트라 알고리즘과 비슷한 부분이 굉장히 많은 알고리즘입니다. 혹시 다익스트라가 뭔지 모르시는 분은 아래 포스팅을 확인해주세요. https://com24everyday.tistory.com/137 다익스트라 알고리즘(Dijkstra Algorithm) 안녕하세요. 옆집 컴공생입니다. 오늘은 다익스트라 알고리즘을 배워볼거예요. 다익스트라(Dijkstra Algorith)은 다이나믹 프로그래밍을 활용한 대표적인 최단경로(Shortest Path) 탐색 알고리즘입니다. com24everyday.tistory.com 다익스트라 알고리즘은 '한 정점에서부터 다른 모든 노드를 최소 비용으로.. 2020. 6. 11.