문제

나는 주의 일부는 매우 이상한 사용 O(1)에서의 토론 알고리즘을 포함하는 해싱하고 형식의 검색,종종에서의 컨텍스트를 사용하여 사전 의해 제공되는 종류의 언어 시스템을 사용하여,또는 사전 또는 해시 배열에 사용되는 형식을 사용하여 배열 색인 개념입니다.

기본적으로,O(1)방법에 묶여 일정한 시간과(일반적으로)고정된 공간이다.꽤 근본적인 작업 O(1)지만,사용 중간 언어와 특별한 Vm 는 경향이 있을 왜곡하는 것은 여기에서(예를 들어,어떻게 하나 청산 쓰레기 수집가고 다른 동적인 프로세스를 통해 무엇이 될 수 있 O(1)활동).

하지만 무시하고 상각의 대기 시간,가비지 컬렉션,그리고 내가 여전히 이해하지 못하는 어떻게 도약하는 가정이 특정한 기술을 포함하는 어떤 종류를 검색할 수 있습 O(1)를 제외하고 아래에서 아주 특별한 조건입니다.

지만 저는 이것을 발견하기 전에,예를 들어 그냥 나타났다에 Pandincus 질문,"'적절한'컬렉션을 얻기 위해 사용하는 항목에 O(1)시간에서는 C#.NET?".

로 급이 컬렉션을 내가 알고 있을 제공하는 O(1)세스를 보장 바인딩은 고정된 바인딩을 가진 배열 정수 인덱스 값입니다.가정은 것을 배열해 구현되는 일부를 매핑하 랜덤 액세스 메모리를 사용하는 O(1)작업이 찾는 세포는 인덱스입니다.

한 컬렉션을 포함하는 어떤 종류의 찾 위치를 확인하려면의 일치에 대한 세포의 다른 종류의 인덱스(또는 스파 배열과 정수 인덱스),생활은 그렇게 쉬운 일이 아닙니다.특히,이 있는 경우 collisons 과 혼잡은,가능한지 정확히 O(1).면 컬렉션은 유연하게,하나야를 인식하고의 비용을 청산을 확장하는 기본 구조로(나무 또는 해시 테이블)을 정체 구호(예를 들어,높은 충돌이 발생하거나 불균형 트리).

제가 생각지도 못 말하는 이들의 유연하고 동적인 구조 O(1).아직 내가 그들로까지 제공 O(1)솔루션을 사용하지 않고 어떤 식별 조건의 유지해야 하는 실제로는 O(1)액세스를 보장(뿐만 아니라는 일정한다 무시할 정도로 작음).

질문:이 모든 준비하는 것은 정말에 대한 질문입니다.는 무엇입연함위 O(1)그리고 왜 그것을 받아들이 맹목적으로?그것은 인도 O(1)할 수 있습 큰 바람직하지 않더라도,거의 일정하게?또는 O(1)단순히 처분의 전산상의 복잡한 개념을 비공식적인 사용합니까?내가 의아해 합니다.

업데이트:답변과 코멘트 포인트 디 캐주얼 정의에 대한 O(1)나 자신이고,나는 복구니다.나는 아직도 찾고 좋은 답변,일부 의견의 스레드는 오히려 더 많은 흥미로운 것보다 그들의 답변에서 몇 가지 경우입니다.

도움이 되었습니까?

해결책

나의 이해는 O(1)반드시는 상수입니다.오히려,그것은에 의존하지 않는 변수를 고려하고 있습니다.따라서 해시 조회라고 할 수 있습 O(1)with respect to 에 있는 요소의 수를 해시지와 관련하여 데이터의 길이 되는 해시된 또는 비율의 요소가 버킷에 해시입니다.

다른 요소의 혼란은 큰 O 표기법을 설명합니다 제한하는 행동입니다.따라서,이 기능을 f(N)을 위한 작은 값을 N 수 있습니다 실제로 표시한 변형,하지만 당신은 여전히 올바른 것을 말한 그것은 오는 경우(1)제한으로 N 기가 일정과 관련하여 N.

다른 팁

문제는 사람들은 정말 실수와 용어에 기초하고 있습니다.3 중요하지만 별개의 수업이 여기:

O(1)최악의 경우

이것은 간단합니다-모든 작업을 더 이상 일정한 양의 시간에 최악의 경우에 따라서 모든 경우.액세스하는 배열의 요소입 O(1) 최악의 경우입니다.

O(1)상각하고 최악의 경우

상각 는 것을 의미하지 않는 모든 작업 O(1) 최악의 경우에,그러나 어떤 순서의 N 작업의 총 비용을 순서가 없음 O(N) 최악의 경우에.이는 비록 우리가 수밖에 없는 비용의 어떤 하나의 작업에 의해 일정한,항상 있을 것입니다"충분히 빠른"작업하기 위해"slow"등의 작업에는 실행 시간의 작업 시퀀스는 선수의 작업입니다.

예를 들어,표준 동적 배열 는 두 배로 용량을 채워질 때까지 필요 O(1) 상각하는 시간을 삽입하는 요소의 끝에서도 몇 가지 필요로 삽입 O(N) 시간은 항상있는 충분 O(1) 삽입하는 삽입 N 항목은 항상 걸리 O(N) 시간다.

O(1)균-case

이는 까다로운입니다.두 가지 정의 평균 경우:하나를 위해 무작위로 알고리즘으로 고정 입력,그리고 중 하나에 대한 결정적 알고리즘으로 무작위로 입력이 있습니다.

에 대한 무작위한 알고리즘으로 고정 입력을 계산할 수 있습니다균-한 경우 실행 시간이 주어진 입력하여 분석하는 알고리즘과정 확률 분포의 가능한 모든 시간을 실행하고 평균을 통해 그 분포(알고리즘에 따라 이되지 않을 수 있으로 인해 문제가 중단).

다른 경우에,우리가 필요한 확률 분포를 통해 입력이 있습니다.예를 들어,만약 우리가 측정,정렬 알고리즘,하나는 이러한 확률 분포 것이 분포하는 모든 N!가능한 순열의 입력을 동등하게 높습니다.그런 다음,평균 경우 실행 시간은 평균 실행 시간 통해 가능한 모든 입력이 가중치의 확률에 의해 각각의 입력이 있습니다.

의 대상이 때문에 이 질문은 해시 테이블이있는 결정적이,나에 집중하기 위하여 려고 하고 두 번째의 정의 평균 경우입니다.이제 우리는 항상 확인 확률분포의 입력이기 때문에,음,우리가 될 수 있는 해시 그냥 아무것도에 대한,그리고 그 항목에서 올 수 있는 사용자 입력이나 파일에서 시스템입니다.따라서,에 대해 이야기 할 때 해시 테이블,대부분의 사람들이 그냥 가는 입력이 잘 작동하고 해시 기능이 잘 동작하는 등의 해쉬값을 모든 입력에 본질적으로 임의로 분포 균일하게 이상의 범위는 가능한 해쉬값입니다.

잠시 그 마지막 포인트 싱크에서 O(1) 평균 성능에 대한 해시 테이블에서 온다고 가정한 모든 값은 해쉬 균일하게 배포됩니다.는 경우 이러한 가정을 위반한(그것은 흔하지 않지만,그것은 확실히 수고가 발생),실행 시간은 더 이상 O(1) 평균.

또한 참조 서비스 거부하여 알고리즘의 복잡성.이 논문에서는,저자는 논의들이 어떻게 악용 약점에서는 기본 해쉬 기능을 사용하여 두 가지 버전의 펄를 생성하는 대형 숫자의 문자열과 함께 해시 충돌 사고로 이어질 수 있습니다.이 문자열 목록,그들이 생성되는 서비스 거부 공격에서부 웹 서버에 의해 그들을 먹이 이 문자열은 결과는 최악의 경우 O(N) 동작에 해시 테이블을 사용하여 웹 서버.

O(1)이 일정 시간(일반적으로)고정된 공간

를 명확히 이러한 두 가지 별도의 문이 있습니다.할 수 있습 O(1)시간에만 O(n)공간에서 또는 어떤 것이다.

그것은 인도 O(1)할 수 있습 큰 바람직하지 않더라도,거의 일정하게?

O(1)수 있습니다.impractically 거대하고 그것은 여전히 O(1).그것은 종종 무시하는 알고 있는 경우에 당신은 아주 작은 데이터 세트의 일정보다 더 중요한 복잡성과 위한 합리적으로 작은 데이터 세트,그것은 균형 있습니다.O(n!) 알고리즘을 수 밖으로 수행 O 는 경우(1)상수 및 크기 데이터의 집합의 적절한 규모입니다.

O()의 표기법의 측정은 복잡한 시간이 알고리즘을 취할 것,또는 순수의 측정 방법"좋은"지정한 알고리즘은 주어진 목적이 있다.

나는 볼 수 있습니다 당신이 무엇을 말하는,그러나 내가 생각하기에는 몇가지가 있의 기본적인 기본 가정을 주장하는 모 업 해시 테이블에이의 복잡도 O(1).

  • 해쉬 기능은 합리적인을 피하기 위해 설계된 많은 수의 충돌 사고로 이어질 수 있습니다.
  • 설정된 키는 것은 꽤 많은 무작위로 배포,또는 적어도 고의로도록 설계되어 해쉬 기능이 제대로 수행합니다.

최악의 경우 복잡 해시 테이블 보는 O(n),그러나 그는 매우 가능성이 부여 2 모델 예측제어 등을 다룬다.

해시 테이블 은 데이터 구조를 지원하는 O(1)검색하고 삽입합니다.

Hashtable 일반적으로는 키와 값의 쌍가 사용으로 매개 변수는 함수( hash function)을 결정하는 위치에 있는 값의 내부터 데이터 구조,일반적으로 훌륭한 기능들을 가지고 있습니다.

으로 삽입하고 검색만 의존한 결과는 해시의 기능과하지 않의 크기에 해시 테이블도의 요소 수를 저장,hashtable 는 O(1)삽입 및 검색이 있습니다.

이나 주의, 니다,그러나.즉,같은 해시 테이블을 더 많은 전체가 될 것입니다 해시 충돌 는 해쉬 기능을 반환하는 배열 요소는 이미습니다.이 necesitate a 충돌 해결책 를 찾기 위해서는 다른 빈 요소입니다.

할 때 해시의 충돌이 발생하면,검색하거나 삽입할 수 없습에서 수행 O(1)다.그러나, 좋은 충돌 해결 알고리즘 의 수를 줄일 수 있습을 찾으려고 다른에 suiteable 빈 자리 또는 늘 해시 테이블 크기 의 수를 줄일 수 있습 충돌에서 첫 번째 장소입니다.

그래서 이론적으로, 만 해시 테이블에 의해 뒷받침 배열의 요소와 완벽한 해쉬 기능을 달성 할 수있을 것 O(1)성능, 로는 것을 방지 할 수있는 유일한 방법은 해시 충돌하는 드라이브의 수는 데 필요한 작업입니다.따라서,어떠한 유한 크기의 배열이 하나의 시간 또는 다른 것보다 덜 O(1)때문에 해시 충돌 사고로 이어질 수 있습니다.


Let's take a look at 예입니다.사용하자 해시 테이블에 저장되는 항목은 다음과 같습니다 (key, value) 쌍:

  • (Name, Bob)
  • (Occupation, Student)
  • (Location, Earth)

우리를 구현하는 것이 hashtable 백엔드의 배열과 100 요소입니다.

key 우선 순위를 결정하는 데 사용됩 배열의 요소 저장(key, value 한)쌍.를 결정하기 위해 요소 hash_function 사용됩니다:

  • hash_function("Name")18
  • hash_function("Occupation")32
  • hash_function("Location")74.

에서 위의 결과,우리가 할당 (key, value) 쌍으로 배열의 요소.

array[18] = ("Name", "Bob")
array[32] = ("Occupation", "Student")
array[74] = ("Location", "Earth")

삽입만의 사용을 필요로 해시 기능에 의존하지 않는 크기의 해시 테이블이나 그 요소,그래서 그것을 수행할 수 있습 O(1)다.

마찬가지 요소를 검색을 사용하면 해쉬 기능입니다.

우리가 원하는 경우를 열쇠 "Name", 우리는 것이 수행 hash_function("Name") 을 찾는 배열의 요소가 원하는 값을 수 있습니다.

또한,찾음에 의존하지 않는 크기의 hashtable 도의 요소 수를 저장하므로,O(1)작업입니다.

든 것이 잘되어 있다는 것입니다.해보자를 추가하는 항목 ("Pet", "Dog").그러나 문제가 있으로, hash_function("Pet")18, 같은 해쉬한 "Name" 키입니다.

따라서,우리는 우리를 해결해야 합니다 이 해시 충돌이 발생합니다.고 있다고 가정해 봅시다 이 해시 충돌을 해결하는 기능을 우리는 발견하는 새로운 빈 요소입 29:

array[29] = ("Pet", "Dog")

었기 때문에 해시의 충돌에서 이 삽입,우리의 성능이 매우 O(1).

이 문제는 것입니다 또한 작물 때 우리는 시도를 검색 "Pet" 키으로,찾으려는 요소를 포함하는 "Pet" 키에 의해 수행 hash_function("Pet") 것으로 항상 18 처음.

일단 우리가 보는 요소 18 개를 찾습니다 키 "Name""Pet".을 찾을 때 우리는 이러한 불일치,우리가 해결해야 하는 충돌을 검색하기 위해 정확한 요소를 포함하는 실제 "Pet" 키입니다.Resovling 해시 충돌은 추가 작업은 해시 테이블지 않을 수행 O(1)다.

내가 말할 수 없이 다른 토론을 본 적이 있지만,적어도 하나의 해싱하는 알고리즘 보 O(1).

뻐꾸기 해싱 을 유지하는 고정이 없도록 체인에서 해쉬테이블에 추가한다.삽입 상각 O(1),검색은 항상 O(1).나는 본 적이 구현,그것은 뭔가 새로 발견되었을 때에 대학도 있습니다.에 대한 상대적으로 정적 데이터 세트,그것은 매우 좋은 O(1),계산을 하기 때문에 두 개의 해쉬 기능을 수행한 두 가지 조회하고 즉시 답을 알고있다.

당신이 마음,이것은 추측하고 해시 calcuation O(1)뿐만 아니라.주장할 수 있는 길이-K 를,문자열 모든 해시는 최소한 O(K).현실에서,당신은 할 수밖에 없 K 매우 쉽게 말 K < 1000.O(K)~=O(1)을 위한 K < 1000.

가 있는 개념적 오류 방법으로 당신은 이해 큰 오 표기 합니다.그것이 무엇을 의미가 주어진 것을 알고리즘과 데이터 입력 설정,상 알고리즘에 대한의 실행시간에 따라 값의 오-기능 데이터의 크기가 설정되는 경향이 있습니다.

한 때는 알고리즘을 소 O(n)시간,그 의미에 대한 런타임 있는 알고리즘의 최악의 경우에 따라 선형적 크기의 입력을 설정합니다.

때로는 알고리즘은 오(1)시간 유일한 것은 그것이 의미하는 것은 주어진 기능 T(f)을 계산하는 런타임의 기능을 f(n),가 존재한다는 긍정적인 자연 수 k 등 T(f) < k 에 대한 모든 입력 n.기본적으로,그것이 의미하는 상한 실행 시간의 알고리즘에 의존하지 않는 크기,가정,제한.

지금,그 의미하지 않는 어떤 방법으로는 한계가 작고,단지 그것의 독립적인 크기의 입력을 설정합니다.그렇다면 나는 인위적으로 정의하는 바인딩 k 의 크기에 대한 데이터로 설정,다음의 복잡성이 될 것입 O(k)==O(1).

예를 들어 검색을 위해 인스턴스의 가치에 연결 리스트는 O(n)작업입니다.하지만 내가 말한다면 목록은 대부분의 8 개 요소,그 O(n)된 O(8)된 O(1).

이 경우에,그것은 우리가 사용되는 라 데이터 구조를 사전으로(나무의 캐릭터,리프 노드의 값을 포함한 문자열에 사용),키가 있는 경우에는 제한,다음의 시간을 조회할 수 있으로 간주 O(1)(를 정의하는 경우 캐릭터 필드를 갖는 것으로 대부분에서 k 문서 길이가 될 수 있는 합리적인 가정이 많은 경우).

에 대한 해시 테이블로 가는 해싱 기능은 좋(으로)충분히 스파 스을 최소화하기 위하여 충돌을 들추어내고 때 수행되는 데이터 구조에 대한 정보를 여러분에,당신은 실제로 그것을 고려 O(1)액세스 시간은 구조입니다.

결론적으로,O(1)는 시간이 될 수 있 평가에 대한 많은 것들입니다.대용량 데이터에 대한 구조물의 복잡성을 적절한 해쉬 기능을 할 수 없을 사용에 충분한 사례가 존재하는 금액의 충돌 리드 그것처럼 행동하는 O(n)데이터 구조,그리고 들추어내 될 수 있습니다 매우 비싸다.어떤 경우에,O(로그(n))구조는 다음과 같 AVL 또는 B-트리할 수 있는 우수한 대안입니다.

일반적으로,생각하는 사람들이 그들을 사용해 비교적 관계없이 정확성.예를 들어,해시-기반 데이터 구조 O(1)(평균)보면 잘 설계하고 당신은 좋은 해시입니다.모든 것이 해시하는 단일 버킷,그것 O(n).일반적으로만 사용 좋은 알고리즘과 키가 합리적으로 분산되므로 편리하게 이야기하는 그것에 대해 O(1)없이 모든 자격이 있습니다.마찬가지로 나,나무,등등.우리는 마음에서 일정한 구현에서 그리고 간단하게 더 편리하게 그들에 대해 이야기,토론할 때 일반적지 않고,자격입니다.는 경우,다른 한편,우리는 논의 특정 구현,그것은 아마이 지불하는 것이 더 정확합니다.

HashTable 보는 O(1)대한 항목의 수를 표기 때문에 상관없이 얼마나 많은 항목 목록에 추가 비용을 해시하는 단일 항목은 거의 동일하고 만들어 해쉬 말할 것이다 당신의 주소 항목입니다.


대답하 왜 이런 관련이 있습니다.OP 이유에 대해 물었 O(1)보였다려 주위에 이렇게 할 때 그의 마음에 그것을 명백하게 적용할 수 없음에 많은 상황이다.이 대답을 설명하는 O(1)시간 정말로 가능한에서는 그러한 상황.

해시 테이블의 구현은 실제로지"정확하게"O(1)에서 사용하는 경우에,당신 테스트 중 하나 당신들은 평균 약 1.5 조회를 찾을 수 있어 키에서 크기가 큰 데이터 집합

(때문에는 사실을 충돌 가 발생하고 충돌하면,다른 위치는 할당해야합니다)

또한,연습,해시맵에 의해 백업됩 배열 초기 크기,그것은"자란"두 번 크기에 도달할 때 70%충만한 평균에는 상대적으로 좋은 해결 공간입니다.후 70%충만 충돌 요금이 빠르게 성장합니다.

빅 오 이론이 있는 경우 O(1)알고리즘,또는 O(2)알고리즘에 중요한 요소의 분위기 사이의 관계를 입력 설정 크기 및 단계를 삽입/가 그들 중 하나입니다.O(2)이전 일정한 시간,그래서 우리는 단지 대략적인으로 그것 O(1)을 의미하기 때문에,더 많거나 적은 동일한 것입니다.

에서,현실만 있 1 방법으로"완벽한 hashtable"O(1),그리고 필요합니다:

  1. 글로벌 완벽한 해시키는 발전기
  2. 는 결합하지 않은 주소 공간입니다.

( 예외 경우:는 경우에 당신을 계산할 수 있다는 사전에 모든 순열의 허용되는 열쇠 시스템에 대한 귀하의 목표를 백업장 주소 공간은 정의 크기가 저장할 수 있는 모든 키는 허용,당신은 완벽한 해시,하지만 그는"도메인을 제한"완벽함)

주 메모리 할당,그것은 그럴듯한에서 이상을 이기 때문에,그것은 것이 있다고 가정 매혹적인 방식으로 팩의 무한한 양의 데이터를 일정량의 공간으로 데이터의 손실 없이,그리고 그 물류 불가능합니다.

그래서 소급 받고,O(1.5)는 일정한 시간에서는 유한 양의 메모리라도 상대적으로 순진한 해시키기에,나는 고려 굉장히 굉장하다.

Suffixory 노트 참고 사용 O(1.5)and O(2)여기에.이러한 실제로 존재하지 않 big-o.이들은 단지 어떤 사람이 알지 못 big-o 가입하세요

는 경우에는 뭔가 취 1.5 단계를 키를 찾는,또는 2 단계로는 키를,또는 1 단계는 키,하지만 단계의 수를 초과하지 않는 경우 2 는지 여부와 걸리는 1 단계 또는 2 은 완전히 임의로,그것은 여전히 Big-O of O(1).이 때문에 아무 문제 는 방법 많은 항목을 추가한 데이터베이스 크기,그것은 여전히 유지 <2 단계가 있습니다.면에 대한 모든 테이블>500 키를 2 단계로,다음을 추측할 수 있는 사람들을 2 단계로는 사실 하나 단계와 2 부,...는 여전히 O(1).

할 수 없는 경우,이 가정을 다음되지 않 Big-O 사고에서 모든기 때문에,다음 사용해야 합니다 숫자를 나타내는 숫자의 유한 전산 단계에 필요한 모든 일을 하고"한 단계"의미가 없습니다.그냥 당신의 머리는 거기에 NO 직접적인 관련 사이 Big-O 와 숫자의 사이클 실행 참여합니다.

O(1)방법,정확히는 알고리즘의 시간 복잡도는 경계에 의해 고정 값을 가집니다.이 의미하지 않는 그것의 일정한 아니라,그것은 경계에 관계없이 입력 값입니다.엄격히 말하자면,많은 혐 O(1)시간 알고리즘을 실제로는 O(1)고 그냥 그렇게 천천히 그들은 제한에 대한 모든 실용적인 입력 값입니다.

예,가비지 컬렉션이 영향을 미친 근사 알고리즘의 복잡성에서 실행중인 쓰레기 수집 아레나도 있습니다.그것은이지만,그것은 매우 열심히 분석하지 않고 경험적인 방법이기 때문에 상호 작용하지 않은 작곡.

소요되는 시간 쓰레기를 수집하는 알고리즘에 따라 달라집 사용되고 있습니다.일반적으로 현대적인 쓰레기 수집가환 모드 메모리로 채워지는 이러한 비용이 통제의 밑에 있습니다.예를 들어,일반적인 접근 방식을 사용하는 것입 니 스타일을 복사본을 수집할 때 메모리는 압력이 낮기 때문에 지불한 비용의 크기에 비례한 라이브 설정에서 교환 사용에 대한 더 많은 공간과로 전환하는 표시 및 청소 컬렉터에 메모리가 부족할 경우 압력이 더 에도 불구하고 있기 때문에 지불한 비용에 비례하는 라이브 위해 설정한 표시 그리고 전체에 힙 또는 죽은 설정을 위해 청소.시간으로 카드를 추가 마킹 및 다른 최적화 등입니다.최악의 경우 비용에 대한 실질적인 쓰레기 수집가 있습니다 실제로 공정한 비트가 더 따기,추가로 대수 요소에 대한 몇 가지 사용 패턴이 있습니다.

그래서,당신이 할당하는 큰 해시 테이블도에 액세스하는 경우 그것을 사용하여 O(1)검색 모든 시간의 일생 동안,당신은 그렇게 할 경우에는 쓰레기 수집 된 환경,때로는 쓰레기 수집가는 것입니다 통과 전체 배열하기 때문에,그것은 크기 O(n)은 당신이 지불하는 동안 정기적으로 컬렉션입니다.

이런 이유로 우리는 일반적으로 그것을 떠날의 복잡성을 분석하는 알고리즘은 쓰레기를 수집과 상호 작용하는 알고리즘에서는 아닌 사소한다.얼마나 나쁜의 비용이 많이 의존하에서 다른 무엇을 하고 있는 동일한 프로세스에서,그래서 분석하지 않은 작곡.

또한 이상을 넘어서 복사 대대 콤팩트표시 및 청소 문제 구현에 대한 세부적인 사항에 큰 영향을 미칠 수 있습니 결과 복잡성:

  1. 증가 쓰레기 수집가는 궤도운 비트,등등.할 수 있는 모든 그러나 그들에게 큰 다시 순회가 사라집니다.
  2. 그는지 여부에 따라 달라집니다 GC 작품을 기준으로 주기적으로 벽 시계 또는 시간을 실행에 비례의 번호 할당입니다.
  3. 는지 여부를 표시 및 청소식 알고리즘이 동시하거나 중지-세계
  4. 는지 여부를 마치 신선한 할당을 검정하는 경우 그것은 그들을 떠난 백색하로 떨어질 때까지 그들에 검은 컨테이너입니다.
  5. 여부를 당신의 언어로 인정하고 수정의 포인터 수 있게 어떤 쓰레기 수집에서 일을 하나의 전달합니다.

마지막으로,논의하는 알고리즘 우리는 우리가 논의하자.이 asymptotics 것이 결코 완전히 통합의 모든 변수의 환경입니다.거의 당신이 이제까지를 구현하의 모든 세부 사항은 데이터 구조로 설계되었습니다.을 빌려 기능 여기고,거기 당신은 드롭 해시 테이블에서 필요가 있기 때문에 빠르게 정렬되지 않은 키 액세스를 사용하여 조합을 통해 찾을 분리 설정된 경로를 압축하고 연합에 의해 순위를 병합하는 메모리 영역은 거기 당신은 당신이 감당할 수 없기 때문에 지불한 비용의 크기에 비례하는 지역을 병합하는 경우 그들에게 또는 무엇을 가지게 합니다.이러한 구조는 생각에 프리미티브 및 asymptotics 당신을 도울 때 계획 전반적인 성능 특성에 대한 구조에 큰'그러나 어떤 상수 문제는 너무입니다.

을 구현할 수 있는 해시 테이블을 가진 완벽하게 O(1)점근적 특성,사용하지 않는 가비지 컬렉션;지도로 메모리에서 파일을 관리합니다.당신은 아마 없을 것 같은 상수로 참여 하지만입니다.

내가 생각할 때,많은 사람들이 주위에 던져 용어"O(1)"그들이 암시적으로 마음에서는"작은"상수로,어떤"작은"의 의미에서의 컨텍스트입니다.

당신은 모든 이 big-O 분석 상황과 상식입니다.수은 매우 유용한 도구가 될 수도 있습니다 말도 안되는 방법에 따라,당신은 그것을 사용합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top