$ \ phi_1= 1 $ 또는 $ \ phi_1= 동적 $ \ text {table-insert} $에 대해 $ \ phi_1= 2 $. 여기서 $ \ phi_i $는 $ i $ th 연산 후 잠재적 인 기능입니다.

cs.stackexchange https://cs.stackexchange.com/questions/128199

문제

다음은 동적 테이블 섹션에서 제공됩니다. 알고리즘에 의해 에 대한 소개입니다. et. al.


다음 의사 코드에서 $ T $ 이 테이블을 나타내는 객체입니다. 필드 $ table [T] $ 은 테이블을 나타내는 저장소 블록에 포인터를 포함합니다. 필드 $ num [T] $ 은 테이블의 항목 수와 $ size [t] $ 은 테이블의 총 슬롯 수입니다. 처음에는 테이블이 비어 있습니다. $ num [t]= 크기 [t]= 0 $ .

$ \ text {table-insert (t, x)} $

$ 1 \ quad \ text {$ size [t]= 0 $} $

$ 2 \ quad \ quad \ text {$ 1 $ 1 $ slot으로 $ 2 테이블 [T] $ 할당} $

$ 3 \ 쿼드 \ 쿼드 크기 [T] \ 솔직한 1 $

$ 4 \ quad \ text {if} num [t]= 크기 [t] $

$ 5 \ 쿼드 \ 쿼드 \ 텍스트 {$ 5 {\ text {-}}} $ 2 \ CDOT 크기 [T] $ 슬롯} $ 2 \ CDOT 크기 [}} 테이블 $

$ 6 \ quad \ quad \ quad \ text {$ table [t] $에 $ table [t] $ into $ new {\ text {-}} 테이블 $} $} $} $} >

$ 7 \ quad \ quad \ quad \ text {무료 $ table [t] $} $} $

$ 8 \ quad \ quad \ 쿼드 테이블 [T] \ \ \ \ {-}} 표 $

$ 9 \ quad \ quad \ quad 크기 [T] \ 왼쪽 \ \ CDOT 크기 [T] $

$ 10 \ quad \ text {$ x $ inse $ table} $

$ 11 \ quad num [t] \ lewarrow num [t] + 1 $

$ n $ $ \ text {table-insert} $ 선택한 잠재적 기능은 다음과 같습니다.

$$ \ phi (t)= 2.Num [T] - [T] $$

$ i $ th $ \ text {table-insert} $ 작동, $ num_i $ $ i $ 뒤에 테이블에 저장된 항목 수를 나타냅니다. 동작, $ size_i $ $ i $ th 조작 후 테이블의 전체 크기를 나타냅니다. $ \ phi_i $ $ i $ th 연산 후 잠재력을 나타냅니다.

초기에, $ num_0= 0, size_0= 0 $ $ \ phi_0= 0 $ .

$ i $ th table-insert 작업이 확장을 트리거하지 않으면 $ size_i= size_ 있습니다. {II} $ $ num_i= num_ {i-1} +1 $ , 작업의 상각 비용은 $ \ widehat {c_i} $ 은 상각 된 비용과 $ C_I $ 입니다.

$$ \ widehat {c_i}= c_i + \ phi_i- \ phi_ {i-1}= 3 \ text {(자세히 표시되지 않음)} $$ < / P>

$ i $ th 연산이 확장을 트리거하면 $ size_i= 2가 있습니다. size_ {i-1} $ $ size_ {i-1}= num_ {i-1}= num_i -1 $ , 다시, < / P>

$$ \ widehat {c_i}= c_i + \ phi_i- \ phi_ {i-1}= 3 \ text {(자세히 표시되지 않음)} $$ < / P>


이제 문제는 $ \ widehat {c_1} $ 에 대한 계산을하지 않는다는 것입니다. 테이블의 요소 (코드의 1,2,3,10,11 행이 실행됩니다).

비용 $ C_1= 1 $ , $ \ phi_0= 0 $ $ num_1= size_1= 1 \ \ phi_1= 2.1-1= 1 $

$ \ phi_1= 1 \ tag 1 $

so, $$ \ widehat {c_1}= c_1 + \ phi_1- \ phi_0= 2 $$

텍스트는 상각 된 비용이 $ 3 $ 이라고 말합니다. (나는 그들이 대부분의 , 내가 이해할 수있는 것부터)

아래의 플롯에서

플롯

텍스트는 $ \ phi_1= 2 $ 의 일종의 모순을 나타내는 것입니다.

ER "> $ (1) $ , $ \ phi_1= 2 $ $ \ widehat {c_i}= 3, \ forall i $

나는 내가 착각 한 곳을 꺼내지 않는다.

도움이 되었습니까?

해결책

우리가 다시 언급하지 않아야 할 인기있는 교과서에서 악명 높은 오류 오류의 인스턴스를 잡았습니다.

반복하려면 "비용 $ C_1= 1 $ , $ \ phi_0= 0 $ < / span> "," $ num_1= size_1= 1 $ $ \ $ $ \ phi_1= 2 \ CDOT1-1= 1 $ "및 " $ \ hat {c_1}= $ $ C_1 + \ PHI_1- \ phi_0 $ $= 2 $ ". $ \ widehat c_i= 3 $ 모두 $ i $ 을 나타냅니다. 첫 번째 $ \ text {t} \ scriptsize {\ text {vible}} \ small \ text {-i} \ scriptsize \ text {nsert} $ 작동은 참으로 매우 특별합니다. 확장으로 간주되지 않습니다. "라인 5-9가 실행되는"으로 정의 된 이벤트. 그러나 $ size_i= size_ {i-1} $ 을 유지 관리하지 않습니다. $ \ widehat {c_i} $ \ / span>에 대한 계산은 $ \ widehat {c_1} $ .

이 오류는 우리가 세부 사항 및 정확성에 너무 많은 관심을 끌었던 예시적인 교과서를 완전히 신뢰하는 경향이있는 오류가 혼란 스럽습니다.

반면에, 그 오류는 언급했듯이, "상각 비용이 대부분 3"이기 때문에 아직도 중요하지 않습니다.

질문이 끝날 때 그림을 자세히 살펴보면 첫 번째 $ \ text {t} \ scriptsize { \ text {vible}} \ small \ text {-i} \ scriptsize \ text {nsert} $ 조작, $ \ phi_1= 1 $ 올바른 값.

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