목록분류 전체보기 (48)
:)
생일 문제(Birthday Problem): 임의로 모인 사람들 중 생일이 같은 두 명이 존재할 확률을 구하는 문제Algorithms - Birthday Data.csv: 학생들의 이름, 서로 식별 가능한 ID, 생일 날짜 저장사용 언어 : Python생일이 같은 두 사람을 수동으로 결정하기 위해 pseudo code 작성bd_problem 함수를 만듦def bd_problem(총 모인 사람의 인원수): n_p 변수 정의 for문 시작 for i in range(n_p, 365): p 변수 정의 n_p와 p간의 관계 최종적인 확률을 probability 변수에 저장 임의로 모인 사람들의 총 인원수와 그 중 2명 이상의 생일이 겹칠 확률..
📖 벨만포드(Bellman-Ford) 알고리즘벨만포드(Bellman-Ford) 알고리즘이란?: 최단 경로(shortest path)를 찾는 알고리즘 중 하나다익스트라(Dijkstra) 알고리즘과 차이점: 다익스트라는 음의 가중치가 있는 그래프에서 작동하지 않으며 벨만포드는 이러한 그래프에서 작동한다.: 벨만포드는 다익스트라보다 단순하며 분산 시스템에 적합하다.: 다익스트라 알고리즘은 Greedy 알고리즘이며 시간 복잡도는 O((V+E)LogV)이다. 벨만포드의 시간 복잡도는 O(V * E)로 다익스트라보다 더 크다.벨만포드 알고리즘 예시↓위에 제시된 예시의 벨만포드 알고리즘 과정을 그림으로 표현↓벨만포드 알고리즘 코드#include using namespace std;struct Edge { int ..

📖 그래프 표현 방법그래프 표현 방법으로는 인접 행렬과 인접 리스트가 존재한다.인접 행렬(예시)(코드)-그래프 형태는 무방향 그래프라고 가정한다.#includeusing namespace std;int vertArr[20][20];int count = 0;void displayMatrix(int v) { int i, j; for(i = 0; i 인접 리스트(예시)(코드)-그래프 형태는 무방향 그래프라고 가정한다.#include#include#includeusing namespace std;void displayAdjList(list adj_list[], int v) { for(int i = 0; i "; list :: iterator it; for(it = adj_list[i]...
📖 그래프정의: Vertices와 Edges로 구성된 비선형 데이터 구조: 그래프(G)는 정점(V)와 간선(E)로 표현 -> G=(V,E)관련 용어정점(또는 노드)여러 가지 특성을 가질 수 있는 객체V(G) : 그래프 G의 정점들의 집합간선(또는 링크)- 정점들 간의 관계- E(G) : 그래프 G의 간선들의 집합📖 그래프 탐색 과정그래프 탐색: 하나의 정점에서 시작하여 모든 정점들을 차례대로 한번씩 방문하는 것그래프 탐색 과정은 BFS와 DFS 알고리즘을 바탕으로 이루어진다.📍 BFS (Breadth-First Search)정의 : 너비 우선 탐색아래 예시로 제시된 그래프를 활용한 탐색 과정은 다음과 같다.(예시)(탐색 과정)-> b부터 탐색 시작-> d와 a 방문 (이때 d,a는 큐로 enqueu..

📖 Data structures augmentation데이터 구조가 효율적으로 구현될 수 있도록 기존 데이터 구조에 추가 정보 추가하는 것이진 탐색 트리 노드에 서브 트리 노드 개수 정보 추가: root에서 내려와 해당 value보다 작거나 같으면 1을 더하고 왼쪽에 있는 서브 트리 개수를 더해준다.📖 Rank이진 탐색 트리에서 노드의 Rank는 왼쪽 서브트리의 노드 수가 중요하다.-코드int getRank(Node* root, int x){ if (root->data == x) return root->leftSize; if (x data) { if (!root->left) return -1; else retur..