[주] 알고리즘 션

사설 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

( g n ) O (로그 N) 또한 대수라는 시간은 이러한 알고리즘에는이진 검색.
O ( n ) O (N) 과 같은 선형 시간으로 알려진, 이러한 알고리즘은 간단한 룩업을 포함한다.
O ( n l o g n ) O (N * 로그 N) 한 속도 빠른 정렬 알고리즘 - 바와 같은 빠른 정렬 4 장으로.
O ( n 2 ) O (N ^ 2) 이러한 제 2 등의 알고리즘이 선택 정렬 설명 - 느린 정렬 알고리즘.
O ( n ! ) O (N!) - 매우 느린 알고리즘,이 알고리즘은 외판원 문제에 대한 솔루션을 설명한다 포함되어 있습니다.

여행 세일즈맨 문제

약간, 구글 수 있습니다

2 선택 정렬

2.1 메모리 작품

기입 또는 데이터를 저장하는 경우, 저장 공간은, 컴퓨터가 메모리 주소 요청하는 시스템을 제공하는 데 필요한 복수의 데이터를 저장하는 두 가지 기본적인 방법이 있지만리스트 어레이 및

2.2 배열과 연결리스트

배열의 경우 연속 된 메모리 주소이어야하며, 목록은 어디서든 할 수 있습니다.

단점은 어려울 수 있습니다 새로운 요소의 배열을 추가하려면 예약 된 공간이 아니라 메모리의 낭비가 될 수 있습니다 경우에도 삽입 요소의 측면에서리스트에게 이점을 해당하면서 필요한 요소, 더 나은 목록을 연결하면 개입,,, 충분한 공간을 전송뿐만 아니라 요소를 제거하는 것입니다

그러나 목록은 먼저 첫 번째 요소에 액세스해야하며, 중간 또는 마지막 요소에 푸시 된, 중간 또는 마지막 요소에 액세스 효율이 상대적으로 낮은이지만, 각 배열 요소에 쉽게 액세스의 주소를 알고

어레이 인덱스라는 요소의 위치 (인덱스)

2.3 선택 정렬

내림차순으로 열 수를 감안할 때, 당신은 가장 많은 수를 찾기 위해 목록을 통과하고 새 목록에 추가 시간이 필요하므로 공감, 그래서 두 번째로 큰 번호를 확인하고 있습니다 O ( n 2 ) O (N ^ 2) 이다선택 정렬

3 재귀

3.2 기준 조건으로 순환 조건

어레이의 제조를 포함하는 순환 기능을 참고 배열 기준선 조건은 일반적으로 비어 있거나 단지 하나의 요소를 포함한다. 때 문제가, 기준 조건 경우가 확인하시기 바랍니다.

3.3 스택

기본 호출 스택과 재귀 호출 스택이 있습니다

4 빠른 정렬

각개 정복 (분할 정복하고, D & C)은 예컨대 빠른 정렬과 같은 잘 알려진 재귀 문제 해결 방법이며

4.1 분할 및 정복

동적 프로그래밍의 개념과 유사한 개인 생각은 "가장 큰 땅의이 작은 조각을 상자, 그리고 가장 큰 사각형의 모든 분야에 적용 가능하다"땅을 나누어이 경우이다.

4.2 빠른 정렬

바이 수있는 구체적인 원리는, 그것의 실행 시간은 평균 경우에 O ( n l o g n ) O (N * 로그 N) 최악의 경우, O ( n 2 ) O (N ^ 2) . 병합 정렬 알고리즘 (병합 종류)의 실행 시간은 항상도있다 O ( n l o g n ) O (N * 로그 N)

평균 케이스와 빠른 방전의 최악의 경우는, 원래 책 4.3.2 참조

5 해시 테이블

즉, 해쉬 테이블 (해시), 해시 테이블 구현 파이썬 사전에

6 BFS

BFS 그래프 알고리즘 (너비 우선 탐색, BFS)로서 이하이며, 많은있다 즉, 두 가지 사이의 최단 거리를 발견 할 수있다 :

  • 체커 AI 쓰기, 당신이 이길하기 위해 취할 수있는 단계의 최소 수를 계산

  • 맞춤법 검사기 쓰기, 계산 얼마나 많은 장소 할 수있는 최소한 편집에서 같은과 올바른 단어에 맞춤법이 틀린 단어,

    편집 장소로 읽혀질 변경 READER 필요

  • 관계의 네트워크를 기반으로 가장 가까운 의사 관계를 찾기

그림 6.1-6.2

노드와 엣지의도는, 노드는 직접 많은 노드에 연결될 수있다 이웃이라고합니다.

도 서브 유향 그래프 무향 그래프 연출 무향 그래프 환형도 상당 같은 다음과 같다 :

그림 삽입 설명 여기

6.3 BFS

예를 들어, 친구에게 가까운 과일을 찾아 목록을 한 번 관계를 형성하기 위해 모든 친구를 검색하고 과일 상인을 찾거나 지금까지 전체지도를 통과 할 때까지, 그래서 친구의 친구 목록 양식 2도 관계를 검색하고,이 폭이다 먼저 검색합니다.

그것의 실행 시간이다 O ( V + E ) O (V + E) , 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있다 디피 - 헬만 키 교환,
  • 선형 계획법
게시 95 개 원래 기사 · 원 찬양 30 ·은 40000 +를 볼

추천

출처blog.csdn.net/JohnJim0/article/details/104874706