과학/알고리즘

과학/알고리즘

(알고리즘 -4) 알고리즘의 설계

알고리즘을 설계할 때 당연히 최대한 효율적인 알고리즘을 구현하고 싶을 것입니다. 어떠한 문제를 해결하기 위한 알고리즘은 여러개 존재하는데 그중에서 최대한 효율적인 알고리즘이란 값들의 비교 횟수가 적은 알고리즘입니다. 예를 들어 최댓값을 구하는 알고리즘을 구현하고자 할 때 다음과 같은 방식을 써봅시다. 위 예시같은경우 맨 처음에 25랑 15랑 비교를 해서 25라는 결괏값을 얻었습니다. 그다음 25랑 35랑 비교를 해서 35라는 결괏값을 얻었습니다. 이렇게 서로 다른 두 값을 비교해서 총 7번의 비교연산을 수행했습니다. 즉 8개의 숫자 중에서 7번의 연산을 수행했으니 n개의 숫자가 있었다면 n-1개의 연산을 수행하는 거라고 보면 되겠네요 최댓값 찾는 알고리즘이 n-1번의 연산을 수행하였다면 이건 효율적인 알..

과학/알고리즘

(알고리즘 -3) 기본 자료구조 그래프

그래프 그래프는 도형으로 표현되는 비선형 자료구조로서, 연결할 객체를 나타내는 정점의 집합 V와 정점을 연결하는 간선의 집합 E로 구성되며 G = (V, E)로 표시됩니다. 그래프는 전기회로 분석, 프로젝트 분석, 최단 경로 탐색등 여러 분야에 쓰입니다. 위 그림을 보면 무방향 그래프와 방향 그래프가 있는걸 볼 수 있습니다. 이 둘의 차이는 정점 사이의 간선이 방향이 있냐 없냐 차이입니다. 무방향 그래프를 보면 간선의 방향이 없고 방향그래프는 간선의 방향이 있는걸 볼 수 있습니다. 그리고 무방향 그래프 G1과 무방향 그래프 G2를 보면 간선의 가중치가 있냐 없냐를 볼수가 있는데 가중치가 있는 그래프를 보고 가중 그래프 라고 합니다. 최단 경로를 예시로 들자면 가중치는 시간이나 가는 비용이 있습니다. G2..

과학/알고리즘

(알고리즘 -2) 기본 자료구조 트리

트리 트리란 노드라고 하는 정보 항목이 간선으로 연결되어 계층적 구조를 이루는 비선형 자료구조로서 다음 조건을 만족하는 하나 이상의 노드로 구성된 유한집합 T를 의미합니다. 조건 1. T의 원소 가운데 단 하나의 루트 노드가 존재한다. 조건 2. 루트 노드를 제외한 나머지 노드를 n개의 서로 분리된 부분 집합 T1, T2, T3... Tn으로 나누어지며 각 Ti는 트리가 된다. 이때 Ti를 T의 서브트리라고 합니다. 위사진으로 트리의 용어를 살펴봅시다. 차수 : 노드의 서브트리의 개수를 그 노드의 차수 또는 분기수라고 합니다. a의 차수는 3이고, c의 차수는 0f의 차수는 2입니다. 리프 노트 : 차수가 0인 노드를 리프 노드 또는 단말 노드 라고 합니다. 위 그림을 보면 C J K L M N이 해당됩..

과학/알고리즘

(알고리즘 -1) 알고리즘 과 기본자료구조 배열 연결리스트 스택 큐 코드

알고리즘이란 주어진 문제에 대한 결과를 생성하기 위해 모호하지 않고 간단하며 컴퓨터가 수행 가능한 유한개의 일련의 명령들을 순서적으로 구성한 것이라고 할 수 있습니다. 1. 알고리즘 표현방법 2. 기본 자료구조 알고리즘 표현방법 알고리즘 표현방법에는 예를 들자면 최댓값을 찾는 알고리즘을 구현할 때 일상적인 언어로 표현하는 방법이 있고 코딩으로 표현하는 방법이 있고 순서도로 표현하는 방법이 있습니다. 일상적인 언어를 예로 들자면 1. 첫 숫자를 최댓값으로 저장한다. 2. 다음 숫자를 읽고 저장된 최댓값과 비교한다. 3. 비교 후 더 큰 숫자를 최댓값으로 다시 저장한다. 4. 다음에 읽을 숫자가 남아 있으면 2번으로 간다. 5. 저장된 숫자를 최댓값으로 출력한다 이런 순서가 있고 이걸 코드로 표현하면 다음과..

루민즈
'과학/알고리즘' 카테고리의 글 목록