<?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, 29 Jul 2010 00:28:29 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
	<item>
		<title>By: Igor Ostrovsky</title>
		<link>http://igoro.com/archive/skip-lists-are-fascinating/comment-page-1/#comment-515</link>
		<dc:creator>Igor Ostrovsky</dc:creator>
		<pubDate>Tue, 14 Apr 2009 08:32:55 +0000</pubDate>
		<guid isPermaLink="false">http://igoro.com/archive/skip-lists-are-fascinating/#comment-515</guid>
		<description>@Pablo: Ah, cool. I didn&#039;t know about the MSDN article.

My approach to explaining skip lists is significantly different from the explanation in the MSDN article, and there are differences in the implementation as well.

So, I wouldn&#039;t say that my post is redundant.</description>
		<content:encoded><![CDATA[<p>@Pablo: Ah, cool. I didn&#8217;t know about the MSDN article.</p>
<p>My approach to explaining skip lists is significantly different from the explanation in the MSDN article, and there are differences in the implementation as well.</p>
<p>So, I wouldn&#8217;t say that my post is redundant.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Pablo</title>
		<link>http://igoro.com/archive/skip-lists-are-fascinating/comment-page-1/#comment-514</link>
		<dc:creator>Pablo</dc:creator>
		<pubDate>Tue, 14 Apr 2009 07:52:22 +0000</pubDate>
		<guid isPermaLink="false">http://igoro.com/archive/skip-lists-are-fascinating/#comment-514</guid>
		<description>In fact all this information + sample code was posted on on MSDN a while ago.
Do the guys in MS use MSDN :) ?

Linked lists: 
http://msdn.microsoft.com/en-us/library/ms379573(VS.80).aspx

Other data structures (queue, stack, BT, BST, etc.):
http://msdn.microsoft.com/en-us/library/ms364091(VS.80).aspx</description>
		<content:encoded><![CDATA[<p>In fact all this information + sample code was posted on on MSDN a while ago.<br />
Do the guys in MS use MSDN <img src='http://igoro.com/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ?</p>
<p>Linked lists:<br />
<a href="http://msdn.microsoft.com/en-us/library/ms379573(VS.80).aspx" rel="nofollow">http://msdn.microsoft.com/en-u.....S.80).aspx</a></p>
<p>Other data structures (queue, stack, BT, BST, etc.):<br />
<a href="http://msdn.microsoft.com/en-us/library/ms364091(VS.80).aspx" rel="nofollow">http://msdn.microsoft.com/en-u.....S.80).aspx</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ion Sapoval</title>
		<link>http://igoro.com/archive/skip-lists-are-fascinating/comment-page-1/#comment-348</link>
		<dc:creator>Ion Sapoval</dc:creator>
		<pubDate>Tue, 09 Sep 2008 09:29:32 +0000</pubDate>
		<guid isPermaLink="false">http://igoro.com/archive/skip-lists-are-fascinating/#comment-348</guid>
		<description>I like this type of data structure for it&#039;s simplicity and efficiency. Keep going with this kind of articles they&#039;re very useful. Thanks</description>
		<content:encoded><![CDATA[<p>I like this type of data structure for it&#8217;s simplicity and efficiency. Keep going with this kind of articles they&#8217;re very useful. Thanks</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: kim</title>
		<link>http://igoro.com/archive/skip-lists-are-fascinating/comment-page-1/#comment-321</link>
		<dc:creator>kim</dc:creator>
		<pubDate>Fri, 08 Aug 2008 06:16:23 +0000</pubDate>
		<guid isPermaLink="false">http://igoro.com/archive/skip-lists-are-fascinating/#comment-321</guid>
		<description>I like it!!!!</description>
		<content:encoded><![CDATA[<p>I like it!!!!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Weekly Web Nuggets #22 : Code Monkey Labs</title>
		<link>http://igoro.com/archive/skip-lists-are-fascinating/comment-page-1/#comment-316</link>
		<dc:creator>Weekly Web Nuggets #22 : Code Monkey Labs</dc:creator>
		<pubDate>Mon, 28 Jul 2008 16:00:28 +0000</pubDate>
		<guid isPermaLink="false">http://igoro.com/archive/skip-lists-are-fascinating/#comment-316</guid>
		<description>[...] Skip Lists Are Fascinating: Igor Ostrovsky takes a look at the skip list, a simple, yet powerful data structure. [...]</description>
		<content:encoded><![CDATA[<p>[...] Skip Lists Are Fascinating: Igor Ostrovsky takes a look at the skip list, a simple, yet powerful data structure. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Alex Miller</title>
		<link>http://igoro.com/archive/skip-lists-are-fascinating/comment-page-1/#comment-315</link>
		<dc:creator>Alex Miller</dc:creator>
		<pubDate>Sun, 27 Jul 2008 03:05:18 +0000</pubDate>
		<guid isPermaLink="false">http://igoro.com/archive/skip-lists-are-fascinating/#comment-315</guid>
		<description>Nice article!  I wrote an article on skip lists a while back you might find interesting.  It has links to a lecture available on iTunes from MIT that covers skip lists in some detail as well:

http://tech.puredanger.com/2007/10/03/skip-lists/

You should really also check out the ConcurrentSkipListMap included in Java 6: 

http://java.sun.com/javase/6/docs/api/java/util/concurrent/ConcurrentSkipListMap.html

One of the big benefits of skip lists is that because they are built around linked lists, they can exhibit very localized locking.  ConcurrentSkipListMap is a concurrent skip list based map and is written in lock free style (no synchronization, relies solely on CAS-like operations).  This makes ConcurrentSkipListMap a concurrent sorted map with excellent performance.  I&#039;d recommend reading the source code as well as it is extremely well written and a great example of lock-free coding.</description>
		<content:encoded><![CDATA[<p>Nice article!  I wrote an article on skip lists a while back you might find interesting.  It has links to a lecture available on iTunes from MIT that covers skip lists in some detail as well:</p>
<p><a href="http://tech.puredanger.com/2007/10/03/skip-lists/" rel="nofollow">http://tech.puredanger.com/2007/10/03/skip-lists/</a></p>
<p>You should really also check out the ConcurrentSkipListMap included in Java 6: </p>
<p><a href="http://java.sun.com/javase/6/docs/api/java/util/concurrent/ConcurrentSkipListMap.html" rel="nofollow">http://java.sun.com/javase/6/d.....stMap.html</a></p>
<p>One of the big benefits of skip lists is that because they are built around linked lists, they can exhibit very localized locking.  ConcurrentSkipListMap is a concurrent skip list based map and is written in lock free style (no synchronization, relies solely on CAS-like operations).  This makes ConcurrentSkipListMap a concurrent sorted map with excellent performance.  I&#8217;d recommend reading the source code as well as it is extremely well written and a great example of lock-free coding.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Remco</title>
		<link>http://igoro.com/archive/skip-lists-are-fascinating/comment-page-1/#comment-314</link>
		<dc:creator>Remco</dc:creator>
		<pubDate>Wed, 23 Jul 2008 08:51:21 +0000</pubDate>
		<guid isPermaLink="false">http://igoro.com/archive/skip-lists-are-fascinating/#comment-314</guid>
		<description>@Igor: Agreed. Benchmarking was done in release mode (debugging takes to long to run ;-)). The Hashtable is faster in inserts and removals, in-order iteration is not be supported by an hashtable (order is not gauranteed / used).

One last note on &#039;my&#039; implementation: i think it&#039;s better (in general) to restore the randon number generation instead of using the hashcode to determine the depth of the node. Using hashcodes in case of integers will generate a nice distribution, but for all other types all bets are off ;-)

Requiring where T : IComparable on the list is desirable.

(i just noticed that the type parameters in my sample are missing, just the better, this will prevent viewers from using it as-is, with all the known defects ;-))</description>
		<content:encoded><![CDATA[<p>@Igor: Agreed. Benchmarking was done in release mode (debugging takes to long to run <img src='http://igoro.com/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> ). The Hashtable is faster in inserts and removals, in-order iteration is not be supported by an hashtable (order is not gauranteed / used).</p>
<p>One last note on &#8216;my&#8217; implementation: i think it&#8217;s better (in general) to restore the randon number generation instead of using the hashcode to determine the depth of the node. Using hashcodes in case of integers will generate a nice distribution, but for all other types all bets are off <img src='http://igoro.com/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Requiring where T : IComparable on the list is desirable.</p>
<p>(i just noticed that the type parameters in my sample are missing, just the better, this will prevent viewers from using it as-is, with all the known defects <img src='http://igoro.com/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> )</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Igor Ostrovsky</title>
		<link>http://igoro.com/archive/skip-lists-are-fascinating/comment-page-1/#comment-313</link>
		<dc:creator>Igor Ostrovsky</dc:creator>
		<pubDate>Tue, 22 Jul 2008 17:34:14 +0000</pubDate>
		<guid isPermaLink="false">http://igoro.com/archive/skip-lists-are-fascinating/#comment-313</guid>
		<description>Remco:

Wow, seems like you looked at skip lists pretty in depth! Awesome, experimentation is a great way to learn. Here are responses to some of your points:

- The &quot;distribution&quot; of nodes: see answer to AlexR I just posted.

- GetHashCode: if two values are equal, then their hash codes are guaranteed to be equal. But, hash codes are not intended for less-than-greater-than comparison, and don&#039;t work that way in general.

- O(N) vs O(N/2): it is true that in a sorted list, a lookup will visit N/2 nodes on average. In the big-Oh notation, O(N) is the same as O(N/2), and it is customary to drop the constant factor of 1/2.

- Note that a skip list is an ordered data structure, so it can do a number of things efficiently that a hash table cannot: e.g. in-order enumeration, find the smallest element larger than X, etc.

- When running your benchmarks, make sure you are measuring a RELEASE build rather than a DEBUG build.

Hope that helps, and thanks for reading.</description>
		<content:encoded><![CDATA[<p>Remco:</p>
<p>Wow, seems like you looked at skip lists pretty in depth! Awesome, experimentation is a great way to learn. Here are responses to some of your points:</p>
<p>- The &#8220;distribution&#8221; of nodes: see answer to AlexR I just posted.</p>
<p>- GetHashCode: if two values are equal, then their hash codes are guaranteed to be equal. But, hash codes are not intended for less-than-greater-than comparison, and don&#8217;t work that way in general.</p>
<p>- O(N) vs O(N/2): it is true that in a sorted list, a lookup will visit N/2 nodes on average. In the big-Oh notation, O(N) is the same as O(N/2), and it is customary to drop the constant factor of 1/2.</p>
<p>- Note that a skip list is an ordered data structure, so it can do a number of things efficiently that a hash table cannot: e.g. in-order enumeration, find the smallest element larger than X, etc.</p>
<p>- When running your benchmarks, make sure you are measuring a RELEASE build rather than a DEBUG build.</p>
<p>Hope that helps, and thanks for reading.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Igor Ostrovsky</title>
		<link>http://igoro.com/archive/skip-lists-are-fascinating/comment-page-1/#comment-312</link>
		<dc:creator>Igor Ostrovsky</dc:creator>
		<pubDate>Tue, 22 Jul 2008 17:12:45 +0000</pubDate>
		<guid isPermaLink="false">http://igoro.com/archive/skip-lists-are-fascinating/#comment-312</guid>
		<description>AlexR: A skip list is like a balanced tree. At least, it is like a balanced tree with an extremely high probability.

How does skip list do that? These two properties ensure it:
1. About 1/2 of nodes are in the lowest list only, about 1/4 nodes are in the lowest two lists, 1/8 in the lowest three, and so forth.
2. Nodes with different &quot;heights&quot; are mixed up about evenly.

After any sequence of insertions and removals, properties (1) and (2) still hold.

You can define these properties much more precisely, and use them to prove that insertion, removal and lookup are O(log N) on a skip list, with a very high probability.

Makes sense?</description>
		<content:encoded><![CDATA[<p>AlexR: A skip list is like a balanced tree. At least, it is like a balanced tree with an extremely high probability.</p>
<p>How does skip list do that? These two properties ensure it:<br />
1. About 1/2 of nodes are in the lowest list only, about 1/4 nodes are in the lowest two lists, 1/8 in the lowest three, and so forth.<br />
2. Nodes with different &#8220;heights&#8221; are mixed up about evenly.</p>
<p>After any sequence of insertions and removals, properties (1) and (2) still hold.</p>
<p>You can define these properties much more precisely, and use them to prove that insertion, removal and lookup are O(log N) on a skip list, with a very high probability.</p>
<p>Makes sense?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: AlexR</title>
		<link>http://igoro.com/archive/skip-lists-are-fascinating/comment-page-1/#comment-311</link>
		<dc:creator>AlexR</dc:creator>
		<pubDate>Tue, 22 Jul 2008 16:10:10 +0000</pubDate>
		<guid isPermaLink="false">http://igoro.com/archive/skip-lists-are-fascinating/#comment-311</guid>
		<description>I don&#039;t see difference between  skip list and binary tree without rebalancing operations. Is skip list more effective or not?</description>
		<content:encoded><![CDATA[<p>I don&#8217;t see difference between  skip list and binary tree without rebalancing operations. Is skip list more effective or not?</p>
]]></content:encoded>
	</item>
</channel>
</rss>
