알고리즘 시간 분석“입력 크기”대“입력 요소”


13

알고리즘의 무증상 상한을 분석하고 설명하는 데 여전히 "입력 길이"및 "입력 크기"라는 용어와 약간 혼동됩니다.

알고리즘의 입력 길이는 많은 종류의 데이터와 이야기하는 알고리즘에 따라 달라집니다.

일부 작성자는 입력 길이를 입력을 나타내는 데 필요한 문자 크기로 참조하므로 알고리즘에서 입력으로 설정된 경우 "abcde"는 "입력 길이"가 6 자입니다.

문자 대신 숫자가있는 경우 (예 : 정수) 문자 대신 이진 표현이 사용되므로 "입력 길이"는 로 계산됩니다 ( L 은 입력 세트의 최대 숫자 임) .Nlog(L)

숫자에도 입력 설정하면, 그것들은 "결정 변수"와 "입력 길이"를 설명하는 것으로 다른 문제의 범위에서 번호 길이 N의 입력 세트에 따라서있다 (입력 길이 단지 N이고 예를 들어 부분 집합 합계) 또는 문제를 설명하는 데 필요한 이진 자리 값의 수를 훨씬 더 복잡하게 만듭니다 ( N * l o g ( L ) 과 동일하다고 생각합니다 )0232Nlog(L)

그래서:

  • 그것은 알고리즘에 달려 있습니까?
  • 각 입력 길이 "버전"의 의미와시기
  • 사용할 규칙을 결정하는 데 사용할 수있는 규칙이 있습니까?

답변:


10

가장 공식적인 의미에서 입력의 크기는 알고리즘의 Turing Machine 구현을 참조하여 측정되며 입력을 인코딩하는 데 필요한 알파벳 기호의 수입니다.

이것은 물론 다소 추상적이며 실제로는 작업하기가 매우 어렵거나 적어도 성가시다. 우리는 델리 미터 등을 지정하는 방법을 고려해야합니다. 실제로 일반적으로 발생하는 것은 우리가 찾는 것입니다. 입력의 크기에 대한 프록시 측정-더 편리하고 접근하기 쉬운 것이지만 분석에 수학적 문제가 발생하지 않습니다.

"abcde"예제를 사용하면 일반적으로 입력에 사용하는 알파벳이 작은 경우가 있으므로 글자 의 프록시 측정을 사용 하더라도 Turing Machine에서도 귀찮게 할 수 있음을 알고 있습니다. "abcde"를 상수 c에 대해 최대 5 × c 길이의 인코딩 된 형식으로 변환하는 입력 인코딩을 지정하십시오 . 상수에 의한 이러한 확장은 일반적으로 상수 요인을 버리는 것처럼 점근 분석에 아무런 영향을 미치지 않습니다.55×c c

nnN=cn2lognO(p(n))ppO(p(n))=O(p(N))

mn=O(logm)O(m)O(2n)mPNPNP-완료, 이것을 기억하십시오). 다른 한편으로, 우리가 관심을 갖고있는 모든 것이 결정 가능성이라면, 그것은 충분한 대리 척도 일 것입니다.

따라서 입력 크기에 대한 프록시 측정 값을 선택하기위한 명시된 규칙은 없지만 입력 크기와 비교하여 프록시 크기의 확장 또는 축소는 증명하려는 항목과 호환되어야합니다. 일반적으로 일정한 요인 변경은 거의 중요하지 않습니다. 작은 다항식 요소는 일반적으로 훌륭하고 당신이 보는 대부분의 기본 이론에 효과가 있습니다. 기하 급수적 인 변화는 일반적으로 너무 극단적입니다.


답변 해주셔서 감사합니다. 입력에 대한 P 또는 NP의 멤버십에 대해 이야기 할 올바른 프록시 선택에 대해 이야기하는 부분이 정말 흥미 롭습니다. 그것은 완전히 새로운 질문 일 수 있습니다! 그 외에도 이전 질문으로 돌아갑니다. 그렇다면 입력이 정수 세트라는 알고리즘에 가장 적합한 프록시는 무엇이라고 생각하십니까? 아마도 알고리즘에 따라 달라질 것입니다. N (세트 길이) N * Log (L) (L은 최대 값) 및 Log (Sum (set))의 세 가지 잠재적 옵션이 있습니다.
Jesus Salas

NlogLNN 2logL

5ccn2lognnn2

N 또는 N log L 을 사용하는시기 는 알고리즘이 각 입력 요소에서 작동하는 비용에 따라 달라질 수 있습니다. 우리가 알고리즘이 일정한 시간을 사용하여 비트 단위의 크기와 독립적으로 각 입력 요소에 대한 작업을 수행한다고 가정하면 (그리고 이것은 남용되지 않습니다), N은 아마도 올바른 것이므로 O (N) . 반면에 비트 단위의 입력 요소 크기가 연산 비용을 증가 시키면 N log L 은 입력에서 어떤 속성이 성장에 관여하는지 상한값으로 표현해야하므로 더욱 정확 해 보입니다
Jesus Salas

5c=1c=log255 O(n2logn)비트이지만, 정상적인 인코딩을 모두 처리 할 수있는 매우 견고한 상한입니다.
Luke Mathieson

8

그것은 계산 모델과 불행히도 때로는 알고리즘 자체에 달려 있습니다.

  • ababcd
  • 모델이 RAM 인 경우 입력 크기는 입력이 초기에 유지되는 레지스터 / 메모리 셀 수입니다. 기술적으로 전체 입력을 하나의 레지스터에 쓸 수 있기 때문에 잘못 사용될 수 있습니다. 그러나 로그 비용 모델을 사용하면 계산 비용이 더 많이 듭니다.
  • ww

그러나 "실제"입력 크기와 관련하여 많은 알고리즘이 측정되지 않습니다. 그런 다음 분석 진술이 무엇을 의미하는지주의 깊게 살펴 봐야합니다.

  • O(nlogn)nO(1)n
  • n×n

n


1
nO(n3)nn
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.