본문 바로가기

전체 글31

Django test 수 많아졌을때 테스트 도중에 멈추는 경우 django 버전을 4.2.6으로 업데이트 하고부터 테스트가 진행중 갑작스럽게 중단되는 경우가 발생했다. 항상 그런것은 아니며 경험상 unittest 숫자가 대략 100개가 넘는 경우에 해당 문제가 발생했다. 정확한 원인은 아직 파악못했다. "manage.py test" 명령어를 실행할 때 마다 그리고 테스팅하는 컴퓨터가 달라질 때 마다 테스트가 중단되는 시점이 다른점을 생각했을때 아마 컴퓨터 리소스 점유 때문에 이러한 문제가 발생되는게 아닐까 의심해본다. 원인 파악은 불 확실하지만 그래도 해결 방안은 발견했다. "manage.py test" 옵션 중에 --parallel 옵션이 있다. 테스트를 여러 쓰레드로 나누어 병렬로 진행하는 옵션이다. 각 unittest는 상호 의존성 없이 독립적으로 설계 되었기.. 2023. 11. 1.
다익스트라 알고리즘(Dijkstra), 가중치가 있는 그래프의 최단 경로 다익스트라(Dijkstra) 알고리즘 가중치가 없는 그래프인 경우 BFS를 수행하면 시작점으로 부터 각 정점 까지의 최단 거리를 구할 수 있다. 만약 그래프의 간선이 가중치를 갖는다면 BFS를 이용하여 최단거리를 구하는것은 불가능 하다. 간선의 가중치로 인해 시작점에서 도착점 까지 거치는 간선의 갯수가 해당 경로의 거리가 아니기 때문이다. 거치는 간선의 갯수와는 관계없이 간선의 가중치의 합이 최소가 되는 경로가 최단 경로가 된다. 이와 같은 문제를 해결하기 위한 알고리즘이 여러개 있지만 이 중 그래프에 음수 사이클이 없는 경우 단일 시작점 최단 경로를 구하는 대표적인 알고리즘이 다익스트라 알고리즘이다. 해당 그래프의 최단경로를 구하기 위하여 다익스트라 알고리즘을 구현 하고자 한다면 우선순위 큐와 시작점부.. 2018. 1. 27.
최소 스패닝 트리(MST, Minimum Spanning Tree) 최소 스패닝 트리(MST) 스패닝 트리란 그래프에 모든정점을 연결하는 트리이다. 스패닝 트리 중, 트리를 구성하는 간선들의 가중치의 합이 최소가 되는 스패닝 트리가 최소 스패닝 트리가 된다. 정점의 갯수가 V개인 그래프의 최소 스패닝 트리는 V - 1개의 간선을 갖는다. 최소 스패닝 트리를 구하는 알고리즘은 크루스칼 알고리즘, 프림 알고리즘이 있다. 두 알고리즘에 대해서 설명할 것이다. 크루스칼 알고리즘(Kruskal Algorithm) 크루스칼 알고리즘은 첫번째로 그래프의 간선 리스트를 구성한다. 간선 리스트를 간선의 가중치를 기준으로 오름 차순으로 정렬하고 가중치가 가장 작은 간선부터 스패닝 트리에 해당되는 간선에 추가한다. 이때 사이클이 발생하는 간선은 추가 하지 않고 무시한다. 사이클의 여부는 U.. 2018. 1. 26.
Uva 11456 - Trainsorting Problem Link https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=651&problem=2451&mosmsg=Submission+received+with+ID+20661170 Description of Problem 자동차의 행렬이 주어진다. 행렬에는 자동차의 무게가 저장된어 있다. 이때 자동차를 연결한다. 자동차를 연결하는 제약조건은 앞쪽 즉, 왼쪽의 자동차가 뒷쪽 즉, 오른쪽의 자동차보다 무거워야 된다. 이때 주어진 조건을 만족하는 가장 긴 자동차 행렬의 길이를 구하는 문제다. Algorithm to Solve the Problem 답은 제약조건을 만족하는 가장 긴 행렬의.. 2018. 1. 25.