Reynolds & Tymann의 성장 정의 순서


47

저는 Carl Reynolds와 Paul Tymann (Schaum 's Outlines에서 출판)의 Principles of Computer Science (2008) 라는 책을 읽고 있습니다.

두 번째 장에서는 단순히 이름 목록을 반복하고 주어진 이름이 목록에서 발견되면 TRUE를 반환하는 순차적 검색의 예제와 함께 알고리즘을 소개합니다.

저자는 계속해서 말합니다 (17 페이지).

순차 검색 알고리즘의 "성장 순서"는 n이라고합니다. 이에 대한 표기법은 T (n)입니다. 우리는 또한 성장 순서가 T (n)의 일정한 상수 내에있는 알고리즘은 NL의 세타를 갖는다 고 말합니다. "순차 검색의 세타는 n입니다." 문제의 크기는 n이며, 검색되는 목록의 길이입니다.

나는 이것을 정말로 따르기가 어렵다는 것을 안다. 이 책에는 오류가 수수께끼가 있으므로 무언가 빠졌는지 또는 위의 단락에 오타가 있는지 확실하지 않습니다. 일반적으로 영어에서는 문장이 "... say"로 끝나는 경우가 거의 없습니다.

나 엄청 혼란스러워.

T는 무엇을 의미합니까? 이 책은 설명하지 않습니다. 시간인가, 세타인가?

"NL의 세타"가 "순차 검색의 세타 n이 n"을 의미하는 경우 L은 무엇을 의미합니까? '선형'또는 '길이'?

나는 출판사들에게 설명을 요구했다. 그들은 내 메시지를 저자에게 전달하겠다고 말했다. 그들은 대답하지 않았습니다. 나는 또한 다른 출처를 살펴 보았지만 여전히 무언가를 오해하고 있다는 잔소리를 느끼고 있습니다. 그래서이 단락을 해독 할 때까지 휴식을 취할 수 없습니다.

누구든지 그 책의 사본을 가지고 있고 그 단락을 이해했다면. 그런 다음 해당 단락이 정확한지 알려주거나 다른 말로 설명해 주시면 감사하겠습니다. 감사.


Wikipedia의 시간 복잡성 T (n) : "알고리즘의 성능 시간은 동일한 크기의 다른 입력에 따라 달라질 수 있으므로 일반적으로 T (n)으로 표시되는 알고리즘의 최악의 시간 복잡성을 사용합니다. n 크기의 모든 입력에 걸리는 최대 시간. 일반적으로 명시 적으로 지정되는 덜 일반적이고 명시 적으로 지정되는 경우는 평균 대소 복잡도입니다. 시간 복잡도는 함수 T (n)의 특성에 따라 분류됩니다 (예 : 알고리즘). T (n) = O (n) 인 선형 시간 알고리즘이라고하며 [...] "
Stefan

1
나는 이것이이 이라고 믿으며 , 방금 떠난 별빛이 아닌 리뷰 외에도 오늘 날짜가 다른 것이 있는데 우연의 일치는 아닙니다!
Jason C

그 말의 사용법은 가장 적게 사용되는 정의처럼 느껴집니다. "..., 말해 보자"라고 생각하십시오. 문장이 의미가 있는지 확실하지 않습니다.
Roger Krueger

답변:


77

단락이 잘못되었습니다. 불행히도, 그것은 자료를 이해하지 못하는 학생이 운동에 대한 답변으로 쓰는 것과 같은 것 같습니다. 이런 종류의 말도 안되는 것은 교과서에 없습니다. 갑자기 움직이지 마십시오. 책 내려 놔 책에서 물러나십시오.

순차 검색 알고리즘의 "성장 순서"는 n이라고합니다. 이에 대한 표기법은 입니다.T(n)

제 호출 기능에 대한 표기법 라는 인수 소요 . 이 기능은 무엇이든 의미있게 사용할 수 있습니다. 와 같은 형식의 프로그램 실행 시간에 대해 되풀이 관계를 작성하는 전통이 있습니다. 그러나 는 "성장 순서"가 아닙니다. 여기서는 되풀이 관계를 통해 정의 된 특정 함수입니다. 그리고 " "를 작성하고 사람들이 당신의 마음을 읽고 함수 가 일부 알고리즘의 실행 시간을 나타내는 것을 알기를 기대할  수는 없습니다 .  여기서 는 시간을 나타냅니다.T(n)Tn

T(1)=kT(n)=T(n1)+lognfor n>1
TT(n)=blahTT

우리는 또한 성장 순서가 의 일정한 상수 내에있는 알고리즘 은 NL의 세타를 갖는다 고 말합니다. "순차 검색의 세타는 입니다."T(n)n

이것은 분명히 엉망이되었습니다. 저자들은 다음과 같은 글을 쓰려고했다고 생각합니다.

우리는 또한 성장의 순서는 어떤 일정한 요소 내에 알고리즘 말할 의 세타가 우리는 말 "순차 검색의 세타가 ."T(n)nn

그러나 가 높이 표기법 인 것처럼 "John의 는 180cm입니다." 라고 말하는 것처럼 " 의 세타가 " 이라고 말하지 마십시오 . 그것은 올바른 형태의 단어가 아닙니다. 우리는 실제로 "알고리즘의 실행 시간은 세타  (또는 세타  )"이라고 말합니다. 특히, 는 알고리즘이 아니라 수학 함수에 대해 설명하는 도구입니다. Theta는 달리는 시간이 무언가라는 것을 의미하지는 않습니다. 오히려, 그것은 당신이 달리는 시간에 대해 이야기하기 위해 사용할 수있는 것입니다.nhhnnΘ

그런데 "NL"은 복잡도 클래스 비 결정적 로그 스페이스를 나타내며 원래 인용문에 나타난 위치에서는 전혀 의미가 없습니다.


12
첫 번째 단락은 컴퓨터 과학 경찰이 당신에게 말한 것과 똑같기 때문에 나를 웃게 만들었습니다 :-) (+1도, 이것은 좋은 대답입니다).
Juho

3
설명해 주셔서 감사합니다. 그것은 실제로 매우 도움이되며 이제는 그것을 조금 더 잘 이해한다고 느낍니다 (또는 적어도 그 단락을 이해하지 못해서 내 두뇌에 불안감을 느끼지 않습니다). 나는 지금 긴장을 풀 수있다.
JW.

2

저자가 Big O 표기법 을 설명하려고 시도하는 것처럼 들리지만 특별한 이유없이 로 이름을 바꾸고 텍스트를 완전히 엉망으로 만들었습니다.T

Big O 표기법 (little-o 및 Theta)에 대한 자세한 설명은 Leiserson 교수 의 MIT 책 소개 알고리즘 을 참조하십시오.

한 가지 중요한 차이점은 이 알고리즘의 전체 복잡성을 의미 하는 것으로 보이며 , 일반적으로 시간 , 공간 또는 둘 다입니다. (예 : 일부 알고리즘은 더 큰 데이터 세트에서 느리게 실행되고, 일부 알고리즘은 더 큰 데이터로 더 많은 저장 공간이 필요하며, 일부는 더 많은 시간과 공간이 더 필요합니다) .Onotation

이 은 알고리즘의 시간 측정 만을 의미 하는 것으로 보이며 스토리지 요구 사항을 설명하지 않습니다.Tnotation


1
그들이 큰 O를 설명하려고하는 것처럼 들리지 않습니다. 그들은 세타에 대해 명시 적으로 말합니다.
David Richerby

Leiserson 교수의 텍스트는 특히 TheO를 BigO의보다 정확한 변형으로 설명합니다. Theta에 대한 다른 정의가있을 수 있지만 BigO 관련 theta는 내가 잘 알고있는 것입니다.
abelenky

2
나는 이것이 진행되고 있다고 생각하지 않습니다. 대신, 나는 "T (n) = n"을 작성하고 모든 사람들이 T (n)이 실행 시간, 특히 알고리즘의 실행 시간을 의미한다고 명시 적으로 언급하지 않는 것으로 가정하는 것이 일반적인 문제라고 생각합니다. n은 입력 크기를 나타냅니다.
DW
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.