알고리즘 (6) 썸네일형 리스트형 알고리즘을 하자 (너비 우선 탐색) (이 부분은 스튜어드 러셀의 인공지능을 이용해서 설명합니다.) 너비 우선 탐색이라고 불리는 너비 우선 검색(breadth-first search)은 뿌리 노드를 먼저 확장하고, 뿌리 노드의 모든 후행자를 확장하고, 그 후행자들의 후행자들을 확장하는 식으로 진행하는 간단한 전략입니다. 일반화 하자면, 검색 트리의 임의의 깊이에서 그 깊이에 있는 모든 노드가 확장된 후에야 그다음 수준의 노드들이 확장됩니다. 너비 우선 검색은 일반적 그래프 검색 알고리즘의 한 예로, 확장되지 않은 노드 중 가장 얕은 노드를 선택해서 확장한다는 전략을 사용합니다. 이러한 전략은 전선을 FIFO(First In First Out) 대기열에 담기만 하면 간단히 구현 할 수 있습니다. 즉, 새 노드들이 대기열의 뒤에 추가되고, 오래.. 알고리즘을 하자 (삽입 정렬) 오늘은 삽입 정렬입니다. 오늘 이렇게 해서 정렬은 끝내구요 다음에는 트리search에 대해 하도록 하겠습니다. 알고리즘을 하자 (버블 정렬) #include void bubble_sort(int arr[], int count){ int temp; for(int i = 0; i 시간복잡도 안녕하세요! 오늘은 시간 복잡도에 대해서 공부해볼까 합니다. 시간 복잡도란 시간 복잡도는 문제를 해결하는데 걸리는 시간과 입력의 함수 관계(위키 백과)라고 하는데요 우리가 알고리즘도 수학과 컴퓨터 과학 그리고 언어학또는 관련 분야에서 어떠한 문제를 해결하기 위해 정해진 일련의 절차나 방법을 공식화한 형태로 표현한 것, 계산을 실행하기 위한 단계적 절차를 의미합니다.(위키 백과) 컴퓨터 과학에서 알고리즘의 시간 복잡도는 입력을 나타내는 문자열 길이의 함수로서 작동하는 알고리즘을 취해 시간을 정량화하는 것입니다. 알고리즘의 시간 복잡도는 주로 빅-오 표기법을 사용하여 나타내며, 이 빅-오 표기법은 계수와 낮은 차수의 향을 제외시키는 방법입니다. 이런 방식으로 표현할 때, 예시로서, 만약 크기 n의 모든 입력.. 알고리즘을 하자 (선택 정렬) 네 오늘부터 매주 수요일은 알고리즘에 대해 공부하려고 합니다. 알고리즘도 언젠간 해야하지 하면서 1년 반 정도 지나서 시작하네요 ㅎㅎ 일단 오늘은 간단하게 정렬 알고리즘에 대해 공부해보도록 하겠습니다. 먼저 정렬이란 말 그대로 오름차순이나 내림차순으로 들어온 데이터(입력된 값)들을 정리하는 알고리즘 입니다. 먼저 정렬 알고리즘에서 가장 단순한 선택 정렬(selection sort)을 해보겠습니다. 선택 정렬은 말 그대로 들어온 순서 첫 번째 부터 순서대로 보고 오름차순이면 가장 작은 것을 그 중에서 찾고(내림 차순이면 그 반대) 찾고 보고 있는 숫자를 현재 위치한 숫자와 바꿔 줍니다. 이 짓(행동)을 끝까지 반복해 주시면 선택 정렬이 완성이 됩니다. 아직 말로만 설명해서 이해가 잘 안되실 수 있습니다. .. 알고리즘을 하자 (swap함수) 원래 전 글이 있었는데 사정이 있어서 먼저 이 swap함수 먼저 올리겠습니다. swap은 말 그대로 서로 위치를 바꾸는 함수입니다. 오늘은 그걸 한번 c언어로 구현 해보겠습니다. 일단 먼저 저는 vscode c언어를 이용하고 있습니다. 추후에 파이썬 혹은 C++로 진행 하려고 계획 중이니 일단 C언어로 진행하겠습니다. 이렇고요 결과는 이렇습니다 vscode 터미널이 한글이 깨지네요(고쳐야겠네요 ㅠㅠ)네 일단 오늘은 여기까지 입니다. 이전 1 다음