Big-Oh 시간 복잡도에 둘 이상의 변수가 포함될 수 있습니까?


11

예를 들어 두 문자열을 분석 해야하는 문자열 처리를하고 있다고 가정 해 봅시다. 나는 그들의 길이가 어떻게 될지에 대한 정보를 제공하지 않았으므로 그들은 두 개의 별개의 가족에서 나왔습니다. 알고리즘 또는 의 복잡성을 호출하는 것이 용납 될 수 있습니까?O(nm)O(n+m)

비슷한 맥락에서, 우리가 선택한 알고리즘에는 실제로 두 단계가 필요하다고 가정합니다. 첫 번째 문자열의 설정 단계는 초기 비용을 발생시키지 않고 다른 문자열을 처리 할 수있게합니다. 구조와 여러 계산 이 있다고 말하는 것이 적절하다고 생각 됩니까?O(n)O(m)

두 계산이 모두 선형이기 때문에 이라고 부르는 것이 적절 할까요?O(n)


약간의 배경에 대한 답변에 대한 의견을보십시오 .
OldCurmudgeon

@OldCurmudgeon, 알겠습니다. 나는 그 의견 스레드로 넘어가는 것이 싫어. Oldcurmudgeon, big-O 표기법을 이해하지 않고 big-O 표기법에 대해 논쟁하고 있습니까? 정말 어색합니다. 또한 사용자와 corsiKa는 잘못된 통신을위한 레시피 인 매개 변수 및 을 정의하지 않고 실행 시간에 대해 논쟁하고 있습니다. 힌트 : 문자열을 다룰 때 일반적인 규칙은 을 사용하여 한 문자열의 길이를 사용하고 을 다른 문자열 의 길이에 사용하는 것에 동의하는 것입니다.하지만 이상적으로는 혼동을 일으킬 수 있으므로 명시 적으로 만드는 것이 가장 좋습니다 여기에 설명되어 있습니다). nmmn
DW

@DW OldCurmudgeon은 단순히 학교에서 다른 정의를 배웠을 가능성이 있습니다 ... 아래 의견에서 지적했듯이 여러 변수를 피할 수는 있지만 지금까지는 그렇게 생각하지 않았습니다. 어쩌면 이것 또는 이와 비슷한 것이 표준 이었습니까?
Patrick87

2
이것은 여기여기에 충분한 답변이 있다고 생각합니다 .
Raphael

답변:


14

물론입니다. 이것은 훌륭하고 완벽하게 허용됩니다. 실행 시간이 두 매개 변수에 의존하는 알고리즘을 보는 것이 일반적이며 표준입니다.

예를 들어, 깊이 우선 검색의 실행 시간이 으로 표시되는 경우가 종종 있습니다. 여기서 은 꼭짓점의 수이고 은 그래프의 가장자리 수입니다. 이것은 완벽하게 유효합니다. 이것의 의미는 상수 와 숫자 이 존재 하여 알고리즘의 실행 시간이 모든 대해 최대 이되도록하는 것 입니다. 정확한 실행 시간 인 경우 즉, , 우리는 말할 이 존재하는 경우 되도록 및 암시O(n+m)nmcn0,m0c(n+m)n>n0,m>m0f(n,m)f(n,m)=O(n+m)c,n0,m0n>n0m>m0f(n,m)c(n+m) .

그렇습니다. 첫 번째 단계는 시간이 걸리고 두 번째 단계는 시간 이 걸린다고 말하는 것이 완벽하고 적절 합니다.O(n)O(m)

중요 : 과 이 무엇인지 정의하십시오 . 당신은 "이것은 말할 수없는 무엇인지 지정하지 않고 시간 알고리즘" 입니다. 경우 문제 문에 지정되지 않은, 당신은 그것을 지정해야합니다. 예를 들어 일반적으로 #의 정점과 #의 모서리를 정의하는 그래프 알고리즘을 참조하십시오 .nmO(n)nnn=m=

지금까지 당신이 그들을 호출 할 수 있습니다 여부와 같은 물론하지의, 아니, 시간 - 당신은 어떻게 든 모르는 경우 . 물론 이면 뒤에 오므로 시간 알고리즘도 시간 알고리즘입니다. 그러나 보장 하지 않으면 시간 알고리즘 이라고 부를 수 없습니다 .O(n)m=O(n)m=O(n)m+n=O(n)O(m+n)O(n)m=O(n)O(n)

이것은 기본적인 것입니다. 모든 알고리즘 교과서에서 찾을 수 있습니다.


1
@OldCurmudgeon, 많은 표준 알고리즘 교과서에서 이에 대한 예를 찾을 수 있습니다. 당신은 무엇을 보았습니까? 깊이 우선 검색 (내 답변에서 언급 한 예)에 관한 장을 보셨습니까?
DW

2
@OldCurmudgeon CLRS 연습 문제 3.1-8 에서는 많은 변수의 기능에 대한 표기법의 정의를 정확하게 제시 합니다. 그리고 dfs의 실행 시간에 대한 상한 은 그래프 ( V , E )에 대해 O ( V + E ) 입니다 . OO(V+E)(V,E)
Kirill

2
@Kirill 내 요점은 과거 어느 시점에서 상상할 수 있었으며, 그렇지 않으면 그렇게하는 것이 오류로 간주 될 수있을 정도로 전체 집계 길이 만 고려하는 것이 관례로 간주되었다. 학생의 시험을 채점하고 학생 이 DFS의 시간 복잡성에 대한 변수로 총 입력 길이 을 사용한 경우 2 차원 (V 및 E)을 고려하지 않는 것이 오류라고 생각하십니까? 사실과 사람들이 기꺼이 인정하는 것은 항상 하나가 아닙니다. n
Patrick87

1
모두 이런 식으로 Landau 표기법을 사용 하는 한 동의 하지만 매개 변수를 기능적으로 연결하지 않는 한 실제 의미를 거의 알지 못합니다. A. Schulz의 답변에 링크 된 기사를 참조하십시오 . 여기 에는 "기본"및 "공통"사용이 잘못되었다는 내용으로 시작합니다.
Raphael

1
@ Patrick87 복잡성 이론 은 잘 알려진 많은 클래스의 정의로 인해 대부분 입력 길이 (주로 예외가 있음)를 사용합니다. 알고리즘 분석 은 심각하게 수행 될 때 (모델이 허용하는 한) 실제 자원 사용에 대해 학습하는 데 관심이 있으므로 전체 매개 변수를 더 정확하게 칠하는 데 다른 매개 변수가 더 흥미로워집니다.
Raphael
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.