기사 디렉토리
사설 0
알고리즘에 대한 자세한 설명은이 책의 개념은, 깊이 그래픽 배열과 연결리스트의 차이를 비교 수치 감동하지만, 내용의 알고리즘 설명의 개념의 원리는 특히 대형하지 않다, 단지 계몽의 역할을 제안 나는 그것을 읽을 때 레저 책이나 3 시간에 대해 자신감 목적을 향상 등.
다음은 책에 대한 간략한 저자의 노트, 강한 개인적인 스타일,주의 식사를 할 수있다.
같은 원래의 도서 자료를 검토 할 필요성 저작권 이유의 관점에서, 코드, 참조 GitHub의을 (이 쓰기에 단순히 너무 게으른 때문에, 전적으로, 내가 추가 할 필요, 의견이 환영이있다).
알고리즘 1 소개
1.1 소개
명령들의 세트, 즉 알고리즘은 코드 세그먼트 알고리즘으로 간주 될 수 있고, 작업을 완료한다. 그러나이 책의 일부에 대한 이야기는 더 빠르거나 더 흥미로운 문제를 해결하기 위해, 또는 둘 모두를 알고리즘을 설명합니다.
1.2 이진 검색
용의자라고 시작하기 위해 1, 예를 들어, 단어의 수를 최소로 추측 간단한 조회를
이진 검색 고등학교 과학 이분법 약간
상영 시간 : 이진 검색과 n 개의 요소의 목록은 log2n 단계로 차지 단순히 n은 대부분의 단계를 찾을 필요가 있습니다.
참고 : 이진 검색이 유용 할 때리스트가 정렬 된 경우에만.
1.3 큰 O 표기법
빅 O를 표기 수단이 얼마나 빨리 알고리즘입니다. 그것은 다음과 같이 정의되며,리스트를 가정하면, N 원소를 포함한다. 각 요소를 확인하는 간단한 필요성을 찾기는 n 개의 작업을 수행하는 것이 필요하다. O 표기법 큰, 실행 시간은 O (N)이다. 위의 예와 이진 검색 O는 (로그 N)은
큰 O 표기법은 최악의 경우에 실행 시간을 의미하고, 초에없는 것을 참고.
일반적인 실행 시간 큰 O
또한 대수라는 시간은 이러한 알고리즘에는이진 검색.
과 같은 선형 시간으로 알려진, 이러한 알고리즘은 간단한 룩업을 포함한다.
한 속도 빠른 정렬 알고리즘 - 바와 같은 빠른 정렬 4 장으로.
이러한 제 2 등의 알고리즘이 선택 정렬 설명 - 느린 정렬 알고리즘.
- 매우 느린 알고리즘,이 알고리즘은 외판원 문제에 대한 솔루션을 설명한다 포함되어 있습니다.
여행 세일즈맨 문제
약간, 구글 수 있습니다
2 선택 정렬
2.1 메모리 작품
기입 또는 데이터를 저장하는 경우, 저장 공간은, 컴퓨터가 메모리 주소 요청하는 시스템을 제공하는 데 필요한 복수의 데이터를 저장하는 두 가지 기본적인 방법이 있지만리스트 어레이 및
2.2 배열과 연결리스트
배열의 경우 연속 된 메모리 주소이어야하며, 목록은 어디서든 할 수 있습니다.
단점은 어려울 수 있습니다 새로운 요소의 배열을 추가하려면 예약 된 공간이 아니라 메모리의 낭비가 될 수 있습니다 경우에도 삽입 요소의 측면에서리스트에게 이점을 해당하면서 필요한 요소, 더 나은 목록을 연결하면 개입,,, 충분한 공간을 전송뿐만 아니라 요소를 제거하는 것입니다
그러나 목록은 먼저 첫 번째 요소에 액세스해야하며, 중간 또는 마지막 요소에 푸시 된, 중간 또는 마지막 요소에 액세스 효율이 상대적으로 낮은이지만, 각 배열 요소에 쉽게 액세스의 주소를 알고
어레이 인덱스라는 요소의 위치 (인덱스)
2.3 선택 정렬
내림차순으로 열 수를 감안할 때, 당신은 가장 많은 수를 찾기 위해 목록을 통과하고 새 목록에 추가 시간이 필요하므로 공감, 그래서 두 번째로 큰 번호를 확인하고 있습니다 이다선택 정렬
3 재귀
3.2 기준 조건으로 순환 조건
어레이의 제조를 포함하는 순환 기능을 참고 배열 기준선 조건은 일반적으로 비어 있거나 단지 하나의 요소를 포함한다. 때 문제가, 기준 조건 경우가 확인하시기 바랍니다.
3.3 스택
기본 호출 스택과 재귀 호출 스택이 있습니다
4 빠른 정렬
각개 정복 (분할 정복하고, D & C)은 예컨대 빠른 정렬과 같은 잘 알려진 재귀 문제 해결 방법이며
4.1 분할 및 정복
동적 프로그래밍의 개념과 유사한 개인 생각은 "가장 큰 땅의이 작은 조각을 상자, 그리고 가장 큰 사각형의 모든 분야에 적용 가능하다"땅을 나누어이 경우이다.
4.2 빠른 정렬
바이 수있는 구체적인 원리는, 그것의 실행 시간은 평균 경우에 최악의 경우, . 병합 정렬 알고리즘 (병합 종류)의 실행 시간은 항상도있다
평균 케이스와 빠른 방전의 최악의 경우는, 원래 책 4.3.2 참조
5 해시 테이블
즉, 해쉬 테이블 (해시), 해시 테이블 구현 파이썬 사전에
6 BFS
BFS 그래프 알고리즘 (너비 우선 탐색, BFS)로서 이하이며, 많은있다 즉, 두 가지 사이의 최단 거리를 발견 할 수있다 :
-
체커 AI 쓰기, 당신이 이길하기 위해 취할 수있는 단계의 최소 수를 계산
-
맞춤법 검사기 쓰기, 계산 얼마나 많은 장소 할 수있는 최소한 편집에서 같은과 올바른 단어에 맞춤법이 틀린 단어,
편집 장소로 읽혀질 변경 READER 필요
-
관계의 네트워크를 기반으로 가장 가까운 의사 관계를 찾기
그림 6.1-6.2
노드와 엣지의도는, 노드는 직접 많은 노드에 연결될 수있다 이웃이라고합니다.
도 서브 유향 그래프 무향 그래프 연출 무향 그래프 환형도 상당 같은 다음과 같다 :
6.3 BFS
예를 들어, 친구에게 가까운 과일을 찾아 목록을 한 번 관계를 형성하기 위해 모든 친구를 검색하고 과일 상인을 찾거나 지금까지 전체지도를 통과 할 때까지, 그래서 친구의 친구 목록 양식 2도 관계를 검색하고,이 폭이다 먼저 검색합니다.
그것의 실행 시간이다 , V는 그래프 나 노드의 수이고, E는 에지들의 수이며
7 익스트라 알고리즘
BFS은 단수 또는 최소 경로 길이도의 각각의 측면은 다음에 대한 동일하지 않은 에지들의 총 수를 찾을 수있다 :
이 시간 다 익스트라 알고리즘을 사용할 필요에 등 사분 5 분, 측면 길이. 이러한 측면 또는 다른 숫자와 관련된 양측이 숫자는 그렇지 않은 가중 호출 그래프도 무게 가중 그래프 가중이라한다. 또한, 다 익스트라 알고리즘은 방향성 비순환 그래프 (방향성 비순환 그래프 DAG)에만 적용 가능하며, 포지티브 가중치가 요구되어 있습니다. 당신이 부정적인 가중치를 포함하는 경우, 사용 벨만 포드 알고리즘.
다 익스트라 알고리즘 원칙이 구글에서 할 수 있습니다.
그러나, 알고리즘은 모든 노드 말 것을를 통과 할 수 있다면? 아직 이해하지
8 욕심쟁이 알고리즘
그리 많은 알고리즘, 그것은 전략은 각 단계가 마지막으로 글로벌 최적의 솔루션을 얻을 수 있습니다 지방 최적의 솔루션을 선택하는 것이, 그대로. 그러나 어떤 경우의 모든 효과가 없습니다,하지만 쉽게 구현!
위에서 언급 한 욕심 빠른 정렬 알고리즘은 아니며, 폭 우선 탐색 알고리즘과 익스트라입니다.
NP 완전 문제
이러한 여행하는 세일즈맨 문제로 상세한 원래 책을 참조
어떻게 여부 NP-전체를 결정하는
이 문제를 판단되는 경우, NP-완료 정확한 해결책을 찾을 필요가 없습니다 만, 대략적인 솔루션의 사용.
시스템이 NP-완료 여부를 확인할 방법은 없지만, 따라야 할 몇 가지 단서가있다 :
- 알고리즘의 속도를 실행 적은 요소가있는 경우 매우 빠른이지만, 요소 수의 증가, 속도가 매우 느린 될 것입니다.
- "모든 조합"을 포함하는 문제는 일반적으로 NP 완전 문제이다.
- 문제는 작은 문제로 분할 할 수없는, 우리는 가능한 모든 경우를 고려해야합니다. 이 NP 완성 할 수있다.
- 문제가 및 해결하기 어려운 (예 : 도시 시퀀스 외판원 문제 등) 순서 인 경우에는 NP-완료 될 수 있습니다.
- 문제가 컬렉션에 관련된 경우 (예 : 라디오 방송국의 컬렉션으로)하고 해결하기 어려운, 그것은 NP-완료 될 수 있습니다.
- 문제가 문제를 다루는 또는 세일즈맨 문제를 여행 세트로 변환 할 수 있다면, 그것은 확실히 NP-완료됩니다.
9 동적 프로그래밍
동적 프로그래밍, 이해하기 예제를 통해 단계적으로 인상 단계를 심화 할 수 특별히 어려운 해결하기 위해 하위 문제로 문제가 아래로 생각에 관한 것입니다.
원래 책의 예를 참조하십시오
참고하지만 각 서브 문제는 다른 서브 문제에 의존하지 않은 것, 별도의 경우에만, 동적 프로그래밍은 효과적이었다.
10 K 가까운 이웃 알고리즘
전에 약간의 기계 학습 전투 가
이 장에서는 기계 학습 프로파일 나열 OCR, 스팸 필터를 가지고 있으며, 주식 시장에게 세 가지 예를 예측
11 그럼 어떻게 할
10 즉, 설명되지 않은 알고리즘을 포함
- 나무
- 역 색인
- 푸리에 변환
- 병렬 알고리즘
- 맵리 듀스 특별한 병렬 알고리즘, 즉 분산 알고리즘
- 블룸 필터와 HyperLogLog
- SHA 알고리즘은 주로 암호화 SHA-0, SHA-1, SHA-2, SHA-3을 사용하고, 이전의 두 안전한 현재 bcrypt, 결함이있는 것으로 밝혀졌다
- 지역 구분 해싱 알고리즘, 즉 Simhash
- 교체 RSA있다 디피 - 헬만 키 교환,
- 선형 계획법