<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Skip lists are fascinating!</title>
	<atom:link href="http://igoro.com/archive/skip-lists-are-fascinating/feed/" rel="self" type="application/rss+xml" />
	<link>http://igoro.com/archive/skip-lists-are-fascinating/</link>
	<description>On programming, technology, and random things of interest</description>
	<lastBuildDate>Thu, 02 Feb 2012 01:36:06 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
	<item>
		<title>By: vinay polisetti</title>
		<link>http://igoro.com/archive/skip-lists-are-fascinating/comment-page-1/#comment-26611</link>
		<dc:creator>vinay polisetti</dc:creator>
		<pubDate>Sun, 30 Oct 2011 10:02:53 +0000</pubDate>
		<guid isPermaLink="false">http://igoro.com/archive/skip-lists-are-fascinating/#comment-26611</guid>
		<description>Nice article explaining the use cases of skip lists !!! find some more of them in http://cracktheinterview.org/

Thanks !!

Cheers !!</description>
		<content:encoded><![CDATA[<p>Nice article explaining the use cases of skip lists !!! find some more of them in <a href="http://cracktheinterview.org/" rel="nofollow">http://cracktheinterview.org/</a></p>
<p>Thanks !!</p>
<p>Cheers !!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Duc</title>
		<link>http://igoro.com/archive/skip-lists-are-fascinating/comment-page-1/#comment-2636</link>
		<dc:creator>Duc</dc:creator>
		<pubDate>Sun, 10 Apr 2011 16:28:49 +0000</pubDate>
		<guid isPermaLink="false">http://igoro.com/archive/skip-lists-are-fascinating/#comment-2636</guid>
		<description>Hello Elmer,

   Here is an real life application for skiplist.

   An application breaks a stream of media data (65KB) into
   1000 segments of 65B (bytes - these bytes are numbered; hence
   ordered) for delivered to receivers (UDP traffics). It is very
   possible and very likely in wireless environment, these will be 
   arriving out of order; however, the stream must be in order 
   before it can be presented to the presentation application; 
   Hence these segment must be assembled into an order list in 
   kernel. In this scenario, skiplist is very good since the insert
   can be done in O(log n); balanced trees (trees) might not be so
   good.

   Similar application can be used for ip fragmentation reassembling;
   however in this case, a simple linked list will do since the number
   of fragments belonging to an ip fragement stream is usually small 
   (8 or less fragments).

   Hope this helps.

Regards
DL</description>
		<content:encoded><![CDATA[<p>Hello Elmer,</p>
<p>   Here is an real life application for skiplist.</p>
<p>   An application breaks a stream of media data (65KB) into<br />
   1000 segments of 65B (bytes &#8211; these bytes are numbered; hence<br />
   ordered) for delivered to receivers (UDP traffics). It is very<br />
   possible and very likely in wireless environment, these will be<br />
   arriving out of order; however, the stream must be in order<br />
   before it can be presented to the presentation application;<br />
   Hence these segment must be assembled into an order list in<br />
   kernel. In this scenario, skiplist is very good since the insert<br />
   can be done in O(log n); balanced trees (trees) might not be so<br />
   good.</p>
<p>   Similar application can be used for ip fragmentation reassembling;<br />
   however in this case, a simple linked list will do since the number<br />
   of fragments belonging to an ip fragement stream is usually small<br />
   (8 or less fragments).</p>
<p>   Hope this helps.</p>
<p>Regards<br />
DL</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jingyi</title>
		<link>http://igoro.com/archive/skip-lists-are-fascinating/comment-page-1/#comment-2606</link>
		<dc:creator>Jingyi</dc:creator>
		<pubDate>Mon, 28 Mar 2011 18:43:13 +0000</pubDate>
		<guid isPermaLink="false">http://igoro.com/archive/skip-lists-are-fascinating/#comment-2606</guid>
		<description>Sorry, I guess I didn&#039;t understand the code completely. I was wrong, it didn&#039;t traverse the entire list for the lower levels.</description>
		<content:encoded><![CDATA[<p>Sorry, I guess I didn&#8217;t understand the code completely. I was wrong, it didn&#8217;t traverse the entire list for the lower levels.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jingyi</title>
		<link>http://igoro.com/archive/skip-lists-are-fascinating/comment-page-1/#comment-2605</link>
		<dc:creator>Jingyi</dc:creator>
		<pubDate>Mon, 28 Mar 2011 18:37:16 +0000</pubDate>
		<guid isPermaLink="false">http://igoro.com/archive/skip-lists-are-fascinating/#comment-2605</guid>
		<description>I guess I didn&#039;t get it. I don&#039;t see the O(lgN) for the insertion in this implementation. For example, inserting into the lowest level, it is already O(N) because you have to traverse the entire list. To me, the implementation for insert is N + N/2 + N/4 + ... + N/pow(2, N) = 2N, which is O(N), am i right here? The same thing for Contains. Let&#039;s say, there is a value that is not in the list, when you search it, you have to traverse lgN list and the longest list is N. Can anybody explain that to me?</description>
		<content:encoded><![CDATA[<p>I guess I didn&#8217;t get it. I don&#8217;t see the O(lgN) for the insertion in this implementation. For example, inserting into the lowest level, it is already O(N) because you have to traverse the entire list. To me, the implementation for insert is N + N/2 + N/4 + &#8230; + N/pow(2, N) = 2N, which is O(N), am i right here? The same thing for Contains. Let&#8217;s say, there is a value that is not in the list, when you search it, you have to traverse lgN list and the longest list is N. Can anybody explain that to me?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: links for 2011-03-14 &#171; Blarney Fellow</title>
		<link>http://igoro.com/archive/skip-lists-are-fascinating/comment-page-1/#comment-2509</link>
		<dc:creator>links for 2011-03-14 &#171; Blarney Fellow</dc:creator>
		<pubDate>Tue, 15 Mar 2011 00:24:53 +0000</pubDate>
		<guid isPermaLink="false">http://igoro.com/archive/skip-lists-are-fascinating/#comment-2509</guid>
		<description>[...] Skip lists are fascinating! (tags: algorithm data-structure tree search) [...]</description>
		<content:encoded><![CDATA[<p>[...] Skip lists are fascinating! (tags: algorithm data-structure tree search) [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Igor Ostrovsky</title>
		<link>http://igoro.com/archive/skip-lists-are-fascinating/comment-page-1/#comment-2507</link>
		<dc:creator>Igor Ostrovsky</dc:creator>
		<pubDate>Mon, 14 Mar 2011 07:29:31 +0000</pubDate>
		<guid isPermaLink="false">http://igoro.com/archive/skip-lists-are-fascinating/#comment-2507</guid>
		<description>Barry Kelly: Yeah, reading the bits in the opposite order sounds like a good idea, especially if you are concerned about the quality of the random number generator. Using _rand.Next(2) sounds reasonable too, although that solution may turn out slower - hard to say without trying it out and measuring.</description>
		<content:encoded><![CDATA[<p>Barry Kelly: Yeah, reading the bits in the opposite order sounds like a good idea, especially if you are concerned about the quality of the random number generator. Using _rand.Next(2) sounds reasonable too, although that solution may turn out slower &#8211; hard to say without trying it out and measuring.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Elmer</title>
		<link>http://igoro.com/archive/skip-lists-are-fascinating/comment-page-1/#comment-2506</link>
		<dc:creator>Elmer</dc:creator>
		<pubDate>Mon, 14 Mar 2011 06:20:54 +0000</pubDate>
		<guid isPermaLink="false">http://igoro.com/archive/skip-lists-are-fascinating/#comment-2506</guid>
		<description>Hello Igor,

Very nice blog.  I happen to stumble on your blog when a fellow user in StackOverflow posted the link to your blog as part of his answer to my question.

Do you have ideas on where we can be able to apply Skip Lists?  Or any idea on what program to create so that students can be able to grasp its concepts easily?

Cheers!</description>
		<content:encoded><![CDATA[<p>Hello Igor,</p>
<p>Very nice blog.  I happen to stumble on your blog when a fellow user in StackOverflow posted the link to your blog as part of his answer to my question.</p>
<p>Do you have ideas on where we can be able to apply Skip Lists?  Or any idea on what program to create so that students can be able to grasp its concepts easily?</p>
<p>Cheers!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Barry Kelly</title>
		<link>http://igoro.com/archive/skip-lists-are-fascinating/comment-page-1/#comment-2505</link>
		<dc:creator>Barry Kelly</dc:creator>
		<pubDate>Mon, 14 Mar 2011 05:20:38 +0000</pubDate>
		<guid isPermaLink="false">http://igoro.com/archive/skip-lists-are-fascinating/#comment-2505</guid>
		<description>&lt;code&gt;for (int R = _rand.Next(); (R &amp; 1) == 1; R &gt;&gt;= 1)&lt;/code&gt;

For C# on .NET, this may work fine, but in general, this is a bad way of extracting a 0/1 choice from a pseudo-random number generator (PRNG). Many PRNGs use linear congruential generators, which are just a multiply and an add, and have highly predictable low bits as a result (frequently just a repeating pattern with a short period, as short as 4 or 8).

Safer:

&lt;code&gt;while (_rand.Next(2) == 0)&lt;/code&gt;

- or even simply reading the bits off the other end.</description>
		<content:encoded><![CDATA[<p><code>for (int R = _rand.Next(); (R &amp; 1) == 1; R &gt;&gt;= 1)</code></p>
<p>For C# on .NET, this may work fine, but in general, this is a bad way of extracting a 0/1 choice from a pseudo-random number generator (PRNG). Many PRNGs use linear congruential generators, which are just a multiply and an add, and have highly predictable low bits as a result (frequently just a repeating pattern with a short period, as short as 4 or 8).</p>
<p>Safer:</p>
<p><code>while (_rand.Next(2) == 0)</code></p>
<p>- or even simply reading the bits off the other end.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Matthieu</title>
		<link>http://igoro.com/archive/skip-lists-are-fascinating/comment-page-1/#comment-2087</link>
		<dc:creator>Matthieu</dc:creator>
		<pubDate>Wed, 05 Jan 2011 15:52:34 +0000</pubDate>
		<guid isPermaLink="false">http://igoro.com/archive/skip-lists-are-fascinating/#comment-2087</guid>
		<description>@Igor: Actually, the factor of nodes from one level to another need not be fixed to 1/2. Other factors can be used, and I had read experiments that 1/4 turned out better in the general case. Now of course... I just can&#039;t find it back... but knowing that the factor can change is already something I guess.</description>
		<content:encoded><![CDATA[<p>@Igor: Actually, the factor of nodes from one level to another need not be fixed to 1/2. Other factors can be used, and I had read experiments that 1/4 turned out better in the general case. Now of course&#8230; I just can&#8217;t find it back&#8230; but knowing that the factor can change is already something I guess.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: bmakowsky handbags</title>
		<link>http://igoro.com/archive/skip-lists-are-fascinating/comment-page-1/#comment-1922</link>
		<dc:creator>bmakowsky handbags</dc:creator>
		<pubDate>Mon, 13 Dec 2010 04:31:44 +0000</pubDate>
		<guid isPermaLink="false">http://igoro.com/archive/skip-lists-are-fascinating/#comment-1922</guid>
		<description>Outstanding article over again. Thanks!</description>
		<content:encoded><![CDATA[<p>Outstanding article over again. Thanks!</p>
]]></content:encoded>
	</item>
</channel>
</rss>

