개인 재정 알고리즘 Dummies 치트 시트

알고리즘 Dummies 치트 시트

비디오: ACLS Algorithms 2024

비디오: ACLS Algorithms 2024
Anonim

John Paul Mueller, Luca Massaron

알고리즘은 지루하거나 사용할 필요가 없습니다. 사실, 알고리즘은 당신이 생각하지 못했던 여러 가지 방법으로 당신을 둘러싸고 있으며, 당신은 중요한 작업을 수행하기 위해 매일 그것을 사용합니다. 그러나 수학자가 아니어도 알고리즘을 사용할 수 있어야합니다.

프로그래밍 언어를 사용하면 알고리즘을 만드는 데 사용 된 단계를 설명 할 수 있습니다. 일부 언어는 사람들이 컴퓨터 과학자가되지 않고도 이해할 수있는 방식으로이 작업을 수행 할 때 다른 언어보다 우수합니다. 파이썬은 많은 내장 및 확장 지원 (패키지, 데이터 세트 및 기타 리소스 사용)을 통해 알고리즘 사용을보다 쉽게 ​​만듭니다. 이 치트 시트를 사용하면 알고리즘을 빠르고 쉽게 사용하기 위해 가장 일반적으로 필요한 팁에 액세스 할 수 있습니다.

필요한 알고리즘 찾기

다음 표에서는 다양한 유형의 데이터 분석에 유용한 알고리즘 및 알고리즘 유형을 설명합니다. (알고리즘

설명 유용한 링크 A * 검색
이 알고리즘은 노드를 탐색 할 때 노드 비용을 추적합니다. + 999 (999) (999) h (n)은 노드에 도달하기위한 예상 비용이다. 노드로부터의 목표 f (n) 는 n에서 목표까지의 경로의 예상 비용입니다. 아이디어는 가장 유망한 경로를 먼저 검색하고 값 비싼 경로를 피하는 것입니다. 스탠포드. edu Balanced Tree 구조 조정을 통해 균형 잡힌 구조를 유지하여 액세스 시간을 단축 할 수있는 트리입니다. 왼쪽에있는 요소의 수는 오른쪽에있는 수와 최대 하나만큼 다릅니다. Webdocs

양방향 검색

이 기술은 두 검색 경로가 중간에서 만날 때까지 루트 노드와 목표 노드에서 동시에 검색합니다. 이 방법의 장점은 다른 많은 무차별 대용 솔루션보다 솔루션을 더 빨리 찾을 수 있으므로 시간이 효율적이라는 것입니다. 또한 다른 방법보다 메모리를 더 효율적으로 사용하며 항상 솔루션을 찾습니다. 가장 큰 단점은 구현이 복잡하다는 것입니다. 기획. cs

이진 트리 이 노드는 0 (리프 노드), 1 또는 2 (분기 노드) 다른 노드에 연결되는 노드를 포함하는 트리 유형입니다. 각 노드는 연결성 및 데이터 저장을 위해 포함해야하는 세 가지 요소, 즉 데이터 저장소, 왼쪽 연결 및 오른쪽 연결을 정의합니다.

cs. cmu이다. edu

폭 넓은 우선 검색 이 기술은 루트 노드에서 시작하여 각 하위 노드를 먼저 탐색 한 후 다음 수준으로 이동합니다. 솔루션을 찾을 때까지 레벨별로 단계적으로 진행됩니다. 이 알고리즘의 단점은 모든 노드를 메모리에 저장해야한다는 것입니다. 즉, 많은 수의 노드에 대해 상당한 양의 메모리를 사용합니다. 이 기술은 중복 노드를 검사 할 수 있으므로 시간이 절약되고 솔루션이 항상 제공됩니다.

Khan Academcy

Brute Force
이것은 가능한 모든 해결책을 시도하여 최상의 문제 해결 방법을 찾는 문제 해결 기법입니다. 브 루트 포스 기술은 존재할 때 최적의 솔루션을 보장하지만 대부분의 사람들이이를 피할 수 있도록 구현하는 데 많은 시간을 필요로합니다. Igm. Depth-First Search 이 기술은 루트 노드에서 시작하여 리프 노드에 도달 할 때까지 연결된 자식 노드 집합을 탐색합니다. 솔루션을 찾을 때까지 분기별로 분기를 진행합니다. 이 알고리즘의 단점은 중복 노드를 검사 할 수 없다는 것입니다. 즉 동일한 노드 경로를 두 번 이상 통과 할 수 있다는 의미입니다. 사실,이 알고리즘은 전혀 해결책을 찾지 못할 수 있습니다. 즉, 알고리즘을 무한히 검색하지 못하도록 컷오프 지점을 정의해야합니다. 이 방법의 장점은 메모리가 효율적이라는 것입니다.
해커 어스 Divide and Conquer 이것은 문제를 가장 작은 조각으로 분해하고 가능한 가장 간단한 방법으로 해결하는 문제 해결 기법입니다. 이 기술은 무차별 대입과 같은 다른 접근법과 비교할 때 상당한 시간과 자원을 절약합니다. 그러나 항상 최상의 결과를 보장하지는 않습니다.
칸 아카데미 Dijikstra 이것은 지시 된 가중치 그래프 (양수 가중치) 그래프에서 최단 경로를 찾는 데 사용되는 알고리즘입니다.
Geeks for Geeks 그래프 그래프는 트리 확장의 일종입니다. 나무와 마찬가지로 관계를 형성하기 위해 서로 연결되는 노드가 있습니다. 그러나 이진 트리와 달리 그래프에는 두 개 이상의 연결이있을 수 있습니다. 사실, 그래프 노드는 종종 수많은 연결을 가지고 있습니다. GPS의지도와 같은 장소에서 사용되는 그래프와 트리의 하향식 접근 방식이 작동하지 않는 모든 종류의 다른 장소를 볼 수 있습니다.
자습서 Greedy Algorithms 문제 해결 과정의 모든 단계에서 최상의 해결책을 찾는 문제 해결 중 하나입니다. 욕심 많은 알고리즘은 일반적으로 두 가지 가정을합니다.
주어진 단계에서 단일 최적 선택을하는 것이 가능합니다. 각 단계에서 최적의 선택을 선택함으로써, 전체적인 문제에 대한 최적의 솔루션을 찾는 것이 가능하다. 자습서
탐욕스러운 최우선 검색 (BFS) 알고리즘은 항상 다음 방정식을 사용하여 목표에 가장 가까운 경로를 선택합니다. f (n)
= h n) . 이 특정 알고리즘은 솔루션을 매우 빨리 찾을 수는 있지만 루프에서 멈출 수 있으므로 많은 사람들이 솔루션을 찾는 최적의 방법이라고 생각하지 않습니다.Centurion2
해싱 (Hashing) 실제로 데이터 구조를 찾기 전에 데이터 구조 (특정 구조 일 수 있음)에서 특정 데이터 항목의 위치를 ​​예측하는 방법입니다. 이 접근법은 색인에 배치 된 키의 사용에 의존합니다. 해시 함수는 키를 알고리즘이 해시 테이블에 배치하는 숫자 값으로 변환합니다. 해시 테이블은 알고리즘이 데이터 위치를 쉽게 예측할 수 있도록 데이터 구조의 요소를 가리키는 인덱스를 만드는 방법을 제공합니다. 자습서
트리 구조에 데이터를 삽입 할 수있는 정교한 트리입니다. 데이터 삽입을 사용하면 정렬이 빨라집니다. 트리에서 최대 또는 최소 값을 즉시 제공하는 트리의 기능에 따라 이러한 트리를 최대 힙 및 최소 힙으로 더 분류 할 수 있습니다.

자습서

경험적 발견 (Heuristics)

이것은 자기 발견을 기반으로하는 문제 해결 기법으로, 문제를 해결할 수있는 충분히 유용한 결과를 제공한다. 필요하지 않습니다. 자체 발견은 알고리즘이 당신에게 솔루션에 대한 잠재적으로 유용한 경로를 보여줄 수 있도록하는 프로세스입니다. 그러나 솔루션이 올바른지 여부를 알기 위해서는 인간의 직관력과 이해력에 의지해야합니다.

노스 웨스트. edu
MapReduce 알고리즘을 병렬로 계산하여 (네트워크에 연결된 여러 대의 컴퓨터를 사용하여) 알고리즘을 작동하도록하는 프레임 워크입니다. Hadoop Apache Mergesort Mergesort는 데이터를 정렬하는 범용의 비교 기반 방법입니다. 그것은 업무 수행에 대한 분단 및 정복 방식에 달려 있습니다. 괴짜 괴짜 Nash Equilibrium
이것은 다른 플레이어가 다른 플레이어의 평형 전략을 알고 있기 때문에 아무도 자신의 전략을 바꾸지 않고 얻을 수있는 게임 이론입니다. 이 이론은 플레이어가 게임에서 이기기 위해 모든 다른 플레이어가 내리는 결정을 설명해야하는 적대적인 상황에서 사용되는 것을 봅니다. 칸 아카데미 PageRank
PageRank는 그래프에서 노드의 중요도를 측정하는 알고리즘입니다. 이 알고리즘은 사용자에게 관련 검색어를 제공하기위한 Google 핵심 알고리즘의 근간을 이루고 있습니다. 프린스턴. edu 순수 휴리스틱 검색 이 알고리즘은 비용 순서대로 노드를 확장합니다. 두 개의 목록을 유지 관리합니다. 닫힌 목록에는 이미 탐색 한 노드가 포함되며 열린 목록에는 아직 탐색해야하는 노드가 포함됩니다. 각 반복에서 알고리즘은 가능한 최저 비용으로 노드를 확장합니다. 모든 하위 노드가 닫힌 목록에 배치되고 개별 자식 노드 비용이 계산됩니다. 알고리즘은 저렴한 비용으로 하위 노드를 열린 목록으로 다시 보내고 높은 비용으로 하위 노드를 삭제합니다. 결과적으로 알고리즘은 솔루션에 대한 지능형 비용 기반 검색을 수행합니다.
World of Computing Quicksort 이것은 데이터 배열을 작은 배열로 나누는 것을 기반으로하는 범용 정렬 전략입니다.그것은 업무 수행에 대한 분단 및 정복 방식에 달려 있습니다.
자습서 불균형 트리 균형을 고려하지 않고 필요한 경우 트리에 새 데이터 항목을 배치하는 트리입니다. 이 항목을 추가하는 방법은 트리를 빠르게 작성하지만 검색 또는 정렬시 액세스 속도를 줄입니다.
Quora 다른 수학 구조와 차별화 된 알고리즘 대부분의 사람들과 마찬가지로 수학 용어를 올바르게 사용하는 방법을 알지 못하기 때문에 수학 구조와 관련하여 머리를 긁적 거리는 경우가 종종 있습니다. 마치 사람들이 의도적으로 일을 열심히하려고하는 것입니다! 결국, 방정식은 무엇이며 알고리즘과 다른 이유는 무엇입니까? 음, 더 이상 두려워하지 마십시오. 다음 표는 발생할 수있는 수학 구조에 대한 정확한 가이드를 제공하지만 두려워했습니다.
구조체 설명 수식
전체적으로 취해진 숫자와 기호는 특정 값과 동일하다. 수식에는 항상 등호가 포함되어 있으므로 숫자와 기호가 등호의 다른쪽에있는 특정 값을 나타냅니다. 방정식은 일반적으로 변수 정보를 기호로 표시하지만 변수를 사용할 필요는 없습니다. 수식 정보 또는 아이디어를 표현하는 데 사용되는 숫자와 기호의 조합. 수식은 일반적으로 두 정수의 GCD (Greatest Divisor)을 정의하는 것과 같은 수학적 또는 논리적 개념을 나타냅니다 (Khan Academy의 비디오는 어떻게 작동하는지 알려줍니다). 일반적으로 수식은 둘 이상의 변수 간의 관계를 보여줍니다. 대부분의 사람들은 수식을 특별한 종류의 방정식으로 봅니다.
알고리즘 문제를 해결하기 위해 사용 된 일련의 단계. 이 시퀀스는 특정 솔루션을 제공함으로써 문제를 해결하는 고유 한 방법을 제공합니다. 알고리즘은 수학적 또는 논리적 개념을 나타낼 필요가 없습니다. 비록 사람들이 가장 일반적으로 이러한 방식으로 알고리즘을 사용하기 때문에이 책의 프레젠테이션은 종종 해당 범주에 속합니다. 일부 특수 수식은 이차 수식과 같은 알고리즘이기도합니다. 알고리즘을 표현하는 프로세스의 경우 다음과 같아야합니다. 유한:
알고리즘이 결국 문제를 해결해야합니다. 잘 정의 된 단계: 일련의 단계는 정확하고 유용한 단계가 있어야하며, 특히 컴퓨터에서 이해할 수있는 단계가 있어야하며, 이는 사용 가능한 알고리즘을 생성 할 수 있어야합니다.
Effective: 알고리즘은 누군가가 정의한 문제의 모든 경우를 해결해야합니다. 알고리즘은 항상 해결해야하는 문제를 해결해야합니다. 몇 가지 실패를 예상해야하지만 실패의 빈도는 드물며 의도 된 알고리즘 사용에 적합한 상황에서만 발생합니다. 놀라운 알고리즘 사용 방법

사람들은 항상 알고리즘을 항상 사용합니다. 예를 들어 토스트 만들기는이 블로그 게시물에서 설명한 알고리즘의 예입니다. 토스트 만들기는 놀라운 알고리즘은 아니지만 작업을 수행하기 위해 컴퓨터를 사용하는 다음 표에있는 알고리즘이 있습니다.

작업

놀라운 이유 암호화
데이터를 안전하게 유지하는 것은 해커가 지속적으로 데이터 소스를 공격하는 진행중인 전투입니다. 알고리즘을 사용하여 데이터를 분석하고 다른 형식으로 변환 한 다음 나중에 원래 형식으로 되돌릴 수 있습니다. 그래프 분석
두 점 사이에서 가장 짧은 선을 결정하는 기능은 모든 용도를 찾습니다. 예를 들어, 경로 문제에서 GPS는이 특정 알고리즘 없이는 작동하지 않습니다. A 지점에서 B 지점까지 최단 경로를 사용하여 도시 거리를 따라 갈 수 없기 때문입니다. 의사 난수 생성
게임을 상상해보십시오 그것은 결코 변하지 않았습니다. 동일한 장소에서 시작하여 연주 할 때마다 동일한 방법으로 동일한 단계를 수행합니다. 지루한! 겉보기에 난수를 생성 할 수있는 능력이 없으면 많은 컴퓨터 작업이 무의미하거나 불가능 해집니다. 스케줄링

모든 관련자에게 공평한 자원을 사용하는 것은 알고리즘이 큰 존재로 그들의 존재를 알리는 또 다른 방법이다. 예를 들어, 교차점의 타이밍 표시등은 더 이상 단순한 장치가 아니기 때문에 조명 변경 사이의 초를 계산합니다. 최신 장치는 시간, 기상 조건 및 트래픽 흐름과 같은 모든 종류의 문제를 고려합니다. 그러나 스케줄링은 여러 가지 형태로 제공됩니다. 컴퓨터가 동시에 여러 작업을 실행하는 방법을 고려하십시오. 스케줄링 알고리즘이 없으면 운영 체제가 사용 가능한 모든 리소스를 확보하고 응용 프로그램이 유용한 작업을 수행하지 못하게 할 수 있습니다. 검색

정보를 찾거나 원하는 정보가 자신이 원하는 정보인지 확인하는 것이 필수적입니다. 이 기능이 없으면 사무실에서 완벽한 커피 포트를 판매하는 인터넷에서 웹 사이트를 찾는 것과 같이 온라인으로 수행하는 많은 작업을 수행 할 수 없습니다. 분류

정보를 제시하는 순서를 결정하는 것은 중요합니다. 왜냐하면 오늘날 대부분의 사람들은 정보 과부하에 시달리고 데이터의 돌격을 줄여야하기 때문입니다. 아마존으로 가서 판매 할 커피 포트가 천 개가 넘고 가격이나 가장 긍정적 인 평가에 따라 분류 할 수는 없다고 상상해보십시오. 또한 많은 복잡한 알고리즘은 올바른 순서로 데이터를 신뢰할 수있게 처리해야하므로 분류 작업은 더 많은 문제를 해결하는 중요한 필수 요소입니다. 변형

한 종류의 데이터를 다른 종류의 데이터로 변환하는 것은 데이터를 효과적으로 이해하고 사용하는 데 중요합니다. 예를 들어, 제국의 무게는 잘 이해할 수 있지만 모든 출처는 미터법을 사용합니다. 두 시스템을 변환하면 데이터를 이해하는 데 도움이됩니다. 마찬가지로, FFT (Fast Fourier Transform)는 시간 영역과 주파수 영역 사이의 신호를 변환하므로 WiFi 라우터와 같은 기능을 사용할 수 있습니다.

알고리즘 복잡성 처리

알고리즘은 복잡하다는 것을 이미 알고 있습니다. 그러나 알고리즘이 복잡할수록 실행하는 데 시간이 오래 걸리기 때문에 알고리즘의 복잡성을 알아야합니다. 다음 표는 실행 시간 순서대로 제시되는 다양한 수준의 복잡성을 이해하는 데 도움이됩니다 (가장 빠름에서 가장 느림). 복잡성
설명 상수 복잡성 O (1)
입력 한 양에 관계없이 불변의 실행 시간을 제공합니다. 각 입력에는 실행 시간 단위가 필요합니다. 로그의 복잡성 O (log n)
연산의 수는 입력보다 느리게 증가하므로 작은 입력에서는 알고리즘의 효율성이 떨어지고 큰 입력에서는 더 효율적입니다. 이 클래스의 일반적인 알고리즘은 2 진 검색입니다. 선형 복잡성 O (n)
입력은 1: 1 비율로 증가합니다. 일반적인 알고리즘은 입력을 한 번 스캔하고 각 입력에 연산을 적용 할 때 반복됩니다. 선형 복잡도 O (nlog n) 복잡도는 로그 복잡성과 선형 복잡성의 혼합이다. Mergesortsort, Heapsort 및 Quicksort와 같이 데이터를 주문하는 데 사용되는 일부 스마트 알고리즘이 일반적입니다. 2 차 복잡도 O (n> 999)
연산은 입력들의 수의 제곱으로 증가한다. 다른 반복 (컴퓨터 과학에서 중첩 된 반복이라고 함) 내에서 하나의 반복이있을 때, 당신은 2 차적인 복잡성을 갖습니다. 예를 들어 이름 목록이 있고 가장 유사한 이름 목록을 찾으려면 각 이름을 다른 이름과 비교하십시오. 비효율적 인 주문 알고리즘에는 거품 정렬, 선택 정렬 및 삽입 정렬과 같은 복잡성이 있습니다. 이러한 수준의 복잡성은 솔루션에 도달하기까지 몇 시간 또는 며칠 동안 알고리즘이 실행될 수 있음을 의미합니다. 입방 복잡성 O (n
3 )
네 스티드 반복을 여러 개 가지고 있기 때문에 연산은 2 차 복잡도보다 훨씬 빠르게 증가합니다. 알고리즘의 순서가 복잡하고 적당한 양의 데이터 (100, 000 요소)를 처리해야하는 경우 알고리즘이 몇 년 동안 실행될 수 있습니다. 입력의 강점 인 여러 가지 연산이있을 때는 알고리즘을 다항식 시간으로 실행하는 것으로 간주하는 것이 일반적입니다. 지수 적 복잡성 O (2 999 n )

알고리즘은 추가 된 모든 새로운 요소에 대해 이전 연산의 두 배의 수를 필요로한다. 알고리즘이 이러한 복잡성을 가지면 작은 문제조차도 오래 걸릴 수 있습니다. 철저한 검색을 수행하는 많은 알고리즘은 기하 급수적으로 복잡합니다. 그러나이 수준의 복잡성에 대한 고전적인 예는 피보나치 수를 계산하는 것입니다.

요소 복잡성 O (n!)

알고리즘 Dummies 치트 시트

편집자의 선택

R 더미에서 요소를 만드는 방법

R 더미에서 요소를 만드는 방법

R에서 요소를 만들려면 요소 ) 기능. factor ()의 처음 세 인수는 탐색을 보증합니다. x : 인수로 바꾸려는 입력 벡터입니다. levels : x가 취한 값의 선택적 벡터. 디폴트는 사전 식으로 정렬되어 x의 고유 한 값입니다. labels : Another ...

R- 더미에서 배열을 작성하는 방법

R- 더미에서 배열을 작성하는 방법

행렬 또는 배열을 구성하는 두 가지 옵션이 있습니다. 생성자 함수 Matrix () 및 array ()를 사용하거나 dim () 함수를 사용하여 치수를 간단히 변경하십시오. R의 작성자 함수 사용 배열 () 함수를 사용하면 데이터를 첫 번째 인수로주고 배열을 쉽게 만들 수 있습니다.

R

R

대입 연산자 (<- )를 사용하여 문자 벡터에 값을 할당하는 것과 거의 같은 방법으로 벡터에 이름을 할당합니다. 매월 날짜 수를 가진 명명 된 벡터를 만들고 싶다고 상상해보십시오. 먼저 매 달의 일 수를 포함하는 숫자 벡터를 만듭니다. 그런 다음 ...

편집자의 선택

명상 중에 일반적인 산만 함을 다루는 방법 명상 - 인물

명상 중에 일반적인 산만 함을 다루는 방법 명상 - 인물

Mindfulness 명상의 한 부분. 그들은 손을 맞잡고 간다. 혼란 스럽거나 혼란 스럽거나 짜증을 느끼거나, 느끼거나, 생각을 연습하게하고, 명상의 호흡이나 집중에주의를 기울이십시오. 점점 ...

모드에서 감정을 다루는 방법 - 인형

모드에서 감정을 다루는 방법 - 인형

감정은 해결해야 할 문제가 아니지만 받아 들여지는 경험. 당신이 당신의 감정을 관리하려고 노력하는 모드를 사용할 때, 당신의 도전적인 기분이 깊어 질 수 있습니다. 자동 조종 장치로 생활하면 부정적인 생각이 몰래 들릴 수 있습니다. 당신은 '나는 게으르다', '나는 할 수 없다', '할 수 없다'등의 부정적 생각을 할 수 있습니다.

주의력을 실천할 때 도움이되지 않는 태도를 다루는 방법 - 인형

주의력을 실천할 때 도움이되지 않는 태도를 다루는 방법 - 인형

당신이 그것에 대해 가질 수있는 완벽 주의자 또는 참을성없는 태도를 놓아주기 시작하십시오. Mindfulness 명상으로 고투하는 경우에, 당신은 잠이 들거나 당신의 마음이 방황하고, 화내거나 자신을 좌절시키지 않으려 고 노력합니다. 명상은 시간이 지남에 따라 개발할 수있는 연습입니다. ...

편집자의 선택

Xcode4에서 도움말보기 - 인형

Xcode4에서 도움말보기 - 인형

문서에 빠르게 액세스하는 기능은 Xcode 및 iOS 앱을 만들 때 정기적으로 사용하기를 원할 것입니다. 어떻게해야하는지 잘 모르거나 무언가가 어떻게 작동하는지 알지 못하는 경우 문서에서 대답을 찾을 수 있습니다. 무슨 일이 일어나고 있는지 알아 내면 ...

IOS 앱 개발에 클래스를 구현하는 방법 - 더미

IOS 앱 개발에 클래스를 구현하는 방법 - 더미

IOS 용 클래스의 구현은 해당 메소드의 구현으로 구성됩니다. 다음 목록은 메소드 구현이 무엇이고 클래스의 전체 구현 스펙이 어떻게 생겼는지에 대한 좋은 아이디어를 제공합니다. @implementation 지시어로 묶은 구현 스펙을 사용하여 클래스를 구현하십시오.

이 알고리즘은 요소 간의 가능한 많은 수의 조합으로 인해 복잡한 복잡성을 야기합니다. 상상해보십시오: 입력 내용이 100 개의 개체이고 컴퓨터에서의 작업이 10-999-6-999 초 (요즘 모든 컴퓨터에서 적절한 속도) 인 경우 10- 140-9999 년이 필요합니다. 성공적으로 작업을 완료하십시오 (우주의 나이가 10 999 년으로 추정되기 때문에 불가능합니다). 가장 중요한 요인 복잡성 문제는 세일즈맨이 많은 도시를 방문하고 출발 도시로 돌아 오는 데 필요한 최단 경로를 찾아야하는 여행 세일즈맨 문제입니다.