목록dev-log/cs (42)
오식랜드
양자 컴퓨터 양자 컴퓨터? “스팀펑크 샹드리에” 라고 불리는 외관 절대영도 (-273’c) 냉방 유지 필요 노이즈 위험으로 절대 안정 필요 양자 비트 (Qubit) 사용 리처드 파인만씨가 필요성 제시 Qubit (큐빗) 0 또는 1이 될 수 있는 상태 (일반 비트는 0 혹은 1의 상태) 연산이 빠르다 암호 해독이 빠르다 (소인수분해 / 이산대수) 기존 컴퓨터와의 비교 (슈퍼컴퓨터) 기존 컴퓨터 (슈퍼 컴퓨터) 양자 컴퓨터 비트 기반 디지털 기술 (0 or 1) 양자 기술 (Qubit) 현대 암호 체계 분석 불가 → 계산 능력 한계 초고속 대용량 연산을 통해 가능 → 동시 계산 처리 순서대로 반복적인 계산 3bit → 8회 양자 특성을 통해 동시 계산 3bit → 1회 612자리 정수 암호 해독 → 백만년..
Single source shortest path 문제 (단일 출발점 최단 경로 문제) 질문 A에서 D까지의 경로가 있나? A에서 D까지의 경로가 하나 이상 있다면, 어느 경로가 최단인가? 경로의 길이: 경로에 있는 연결선의 가중치(weight)들의 합 소스(source): 경로에서의 첫 시작 노드(vertex) ⇒ S라고 한다 도착점(destination): 경로에서의 마지막 노드 Dijkstra 알고리즘 방향 그래프 : G=(V, E) 가중치 함수 (cost 함수) : W(e) 시작 노드 : S (Source) 방안 : 시작 노드 S를 기준으로, 다른 모든 노드로의 최단 거리를 구한다 (Greedy) ⇒ 어떠한 정점을 거쳐가는게 빠른지, S에서 직접 가는게 빠른지 비교가 필요하다 Dijkstra 과정..
Greedy Method 탐욕적인 알고리즘 최적화 문제 해결에 용이 : 최대, 최소를 구하는 문제 ( “가장 ~~한 것”을 고르는 문제) 결정의 순간 가장 좋다고 생각하는 것을 선택 ⇒ 번복 X ! 결정의 순간에는 가장 좋았다고 해도 최종 해답에서는 좋지 않을 수 있다. 최적의 해를 주는지 반드시 검증해줘야 한다! 과정 선정 과정 (selection procedure) : 최단 거리 / 최소 시간 등의 기준을 잡고 그에 맞추어 선택 적정성 점검 (feasiblity check) : 새로 구한 해답이 적절한지 점검. 적절하다면, solution set에 포함시킨다 해답 점검 (solution check) : 해답 모음이 최적의 해인지 결정한다 solution = null for i=1 to n do // ..
정렬 알고리즘 합병 정렬 (Merge sort) : O(nlogn) 퀵 정렬 (Quick sort) : O(n^2) 립 정렬 (Heap sort) : O(nlogn) 합병 정렬 (Merge sort) 입력을 2개의 부분 문제로 분할하며 크기가 1/2 씩 감소하는 분할 정복 알고리즘(DC) 이다 정렬이 안되어있는 배열 S를 비내림차순으로 정렬하는 과정 S를 반으로 나누어 A와 B로 명명 나눠진 배열을 각각 정렬 (이 때 A가 끝날 때 까지 B는 정렬하지 않음) 배열이 1개씩 남을 때 까지 반복 (분할) A와 B에 각각 비내림차순 정렬 A와 B의 앞 index의 수를 비교하며 병합 진행 (정복) 시간 복잡도 최선의 경우 : A와 B가 이미 정렬이 이미 되어있던 경우 ⇒ A번 또는 B번 최악의 경우 : 모든 ..
DC : Divaide-and-Conquer Divaide and Conquer : 분할정복식 분할 : 최대한 작게 문제를 분해 정복 : 나눈 문제를 각각 해결 통합 : 필요 시 해결한 문제를 합침 ⇒ 재귀적 방법으로 해결 (분할-정복 반복) ⇒ top-down 접근 방법이라고도 한다 (반대는 bottom-up) top-down (하향식) 접근 소프트웨어 개발 시 기능 / 구조 위주로 바라본다 모듈 단위의 관점 문제를 나누어 구체화 유지보수가 어렵다 절차지향적 프로그래밍에 사용 분할정복 설계 bottom-up (상향식) 접근 소프트웨어 개발 시 데이터를 위주로 바라본다 객체 단위의 관점 데이터들 간의 상호관계를 정의하며 해결 유지보수가 쉽다 객체지향적 프로그래밍에 사용 상호관계 정의 설계 Divaide ..