23.11.2014 Views

Data Structures and Algorithms in Java[1].pdf - Fulvio Frisone

Data Structures and Algorithms in Java[1].pdf - Fulvio Frisone

Data Structures and Algorithms in Java[1].pdf - Fulvio Frisone

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Analyz<strong>in</strong>g Search Time <strong>in</strong> a Skip List<br />

Next, consider the runn<strong>in</strong>g time of a search <strong>in</strong> skip list S, <strong>and</strong> recall that such a<br />

search <strong>in</strong>volves two nested while loops. The <strong>in</strong>ner loop performs a scan forward<br />

on a level of S as long as the next key is no greater than the search key k, <strong>and</strong> the<br />

outer loop drops down to the next level <strong>and</strong> repeats the scan forward iteration.<br />

S<strong>in</strong>ce the height h of S is O(logn) with high probability, the number of drop-down<br />

steps is O(logn) with high probability.<br />

So we have yet to bound the number of scan-forward steps we make. Let n i be the<br />

number of keys exam<strong>in</strong>ed while scann<strong>in</strong>g forward at level i. Observe that, after<br />

the key at the start<strong>in</strong>g position, each additional key exam<strong>in</strong>ed <strong>in</strong> a scan-forward at<br />

level i cannot also belong to level i+1. If any of these keys were on the previous<br />

level, we would have encountered them <strong>in</strong> the previous scan-forward step. Thus,<br />

the probability that any key is counted <strong>in</strong> n i is 1/2. Therefore, the expected value<br />

of n i is exactly equal to the expected number of times we must flip a fair co<strong>in</strong><br />

before it comes up heads. This expected value is 2. Hence, the expected amount<br />

of time spent scann<strong>in</strong>g forward at any level i is O(1). S<strong>in</strong>ce S has O(logn) levels<br />

with high probability, a search <strong>in</strong> S takes expected time O(logn). By a similar<br />

analysis, we can show that the expected runn<strong>in</strong>g time of an <strong>in</strong>sertion or a removal<br />

is O(logn).<br />

Space Usage <strong>in</strong> a Skip List<br />

F<strong>in</strong>ally, let us turn to the space requirement of a skip list S with n entries. As we<br />

observed above, the expected number of positions at level i is n/2 i , which means<br />

that the expected total number of positions <strong>in</strong> S is<br />

.<br />

Us<strong>in</strong>g Proposition 4.5 on geometric summations, we have<br />

for all h ≥ 0.<br />

Hence, the expected space requirement of S is O(n).<br />

Table 9.4 summarizes the performance of a dictionary realized by a skip list.<br />

Table 9.4: Performance of a dictionary<br />

implemented with a skip list. We denote the number<br />

566

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!