This should not be merged with linked list as they are not the same thing. Linked list is the general name for a programming practice of creating nodes that are linked together, while dancing links is a method of iterating through the links, or so i can gather. 22.214.171.124 04:29, 24 September 2005
- I agree, this should not be merged with linked list. Dancing links is a way of removing elements from and re-inserting elements into a doubly-linked list, which is used in implementing an algorithm for trial-and-error searches for solutions to a problem. This article is about a different topic, and should be expanded on, but not merged. ralmin 20:37, 16 October 2005 (UTC)
- Don't merge. I understand linked lists and was looking for information of dancing links, so I have no interest in reading through the lengthy article on linked lists to.
- Don't merge. Whilst the Dancing Link exploits a particularly interesting characteristic of a category of linked list (the 4 way double linked list) that is the end of the similarity. This Dancing Link is an algorithm for solving a certain class of problem (exact cover problem) whereas a link list is a data structure. Those who want to learn about this algorithm will not want to trawl though lots of information on Linked Lists -- Andy Hedges
- Don't merge. Linked list is a data structure, whilst dancing links is an algorithm that exploits certain properties of a special type of linked list called doubly linked lists. These two are fundamentally different. Mangoshake 15:21, 11 November 2005 (UTC)
- Don't merge. The above positions say it all. --asmodai 11:16, 12 November 2005 (UTC)
- 1 Dancing links and Algorithm X
- 2 Example needed
- 3 Reorganize Exact cover, Algorithm X and Dancing Links articles?
- 4 Note on the Perl example linked
- 5 Slight adjustment of algorithm description needed
- 6 Reverse arrow?
- 7 A tutorial for an external link?
- 8 Difficult to understand, and suggestions for expansion
- 9 DLX is not synonymous with Dancing Links
I've read Knuth's paper, and in its current state, this article discusses two aspects:
Knuth's Algorithm X (vaguely) Converting a Sudoku board for use by Algorithm X
The only place in this article where Dancing Links are correctly referred to is where it states that Dancing Links is an algorithm using linked lists. Overall this article is grossly misleading. Read Knuth's paper (linked from the article) to see what I'm talking about.
I think I'll rewrite this even though I'm no expert on the subject; it certainly can't turn out worse.
... Done. The new Algorithm X page will show up... when wikipedia updates their database or whatever needs to happen.
Eneg 19:41, 5 January 2006 (UTC)
It seems to me that we're inventing the term "Algorithm X" for this page; is that true? That might not be the best idea (not doing original research, etc). Glasser 04:35, 8 January 2006 (UTC)
Glasser, please read the original article before making assertions like this. Eneg 19:32, 8 January 2006 (UTC)
You're right, it had been a while since I read the article and only remembered DLX. Sorry. Glasser 21:54, 12 January 2006 (UTC)
I've implemented this algorithm in ML (using only wiki and it didn't take very long...!) but it seems that the sentence "Finally, remove each column (...) in which the selected row has a 1" should also advise writers to remove rows in which the removed columns have a 1 as these rows cannot be in the solution 126.96.36.199 00:06, 19 January 2006 (UTC)
Would it be possible to get an example of how a Sudoku puzzle is represented by a matrix? I suppose I could try to figure it out and post it and see if it lasts.
- I think this is a good idea. But I think it makes the most sense to include this as part of a Sudoku example in the exact cover article. See my question/suggestion below about reorganizing related articles. --Rob Zako 17:37, 27 June 2006 (UTC)
- I have done this programmatically, and I should warn you that these matrices are kind of, erm, large. Ish. Shinobu 11:57, 22 November 2006 (UTC)
- Yes, the matrix is large. See the exact cover article for an abbreviated version of this matrix. --Rob Zako 07:31, 3 December 2006 (UTC)
Reorganize Exact cover, Algorithm X and Dancing Links articles?
The exact cover, Algorithm X and Dancing Links articles all discuss similar ideas. The exact cover problem is an NP-complete problem; Algorithm X is a brute-force algorithm that finds all solutions to the exact cover problem; and Dancing Links is a computer implementation of Algorithm X. These related topics have received a lot of interest recently because Dancing Links is the preferred technique for solving Sudoku puzzles quickly by computer. I suggest that all three topics be reoganized so that most of the information about concepts and examples is in the exact cover articles, with the other two articles focusing just on the particulars of the algorithm or the computer implementation. --Rob Zako 16:56, 27 June 2006 (UTC)
While I'm flattered (the "Perl example" slide presentation linked was mine), that presentation has nothing at all to do with DLX/Algorithm-X. It was a much more general talk about solving Sudoku in Perl. However, I actually did write an article about using Algorithm-X to solve and generate Sudoku using exact cover in an issue of The Perl Review, a print magazine. I think that I replace the link to the slides with a reference to that print publication. Note, however that it only relates to the exact cover Sudoku solver component of Knuth's paper, and does not employ DLX in any way. 188.8.131.52 14:06, 9 January 2007 (UTC) (fishbot)
Slight adjustment of algorithm description needed
As the poster at IP 184.108.40.206 observed, it is necessary to finally remove every row containing a 1 in **any** of the columns that the chosen row contains a 1, to avoid conflict (i.e., multiple 1s in a column). Could someone change the text please? (Otherwise I will have a go myself in a few days...) —The preceding unsigned comment was added by 220.127.116.11 (talk) 07:29, 7 April 2007 (UTC).
What does the reverse arrow (←) mean? —CobraA1 01:58, 17 June 2008 (UTC)
- It appears to mean that the variable on the left hand side is being assigned the value on the right. Most modern programming languages use an equal sign for this, but it's rather different from mathematical equality so some writers prefer other notations such as this one. —David Eppstein (talk) 04:43, 17 June 2008 (UTC)
I had a hard time finding good tutorials on dancing links algorithm and its relation with sodoku that explains it clearly, so I wrote one, after I managed to gather the picture from fragments of information I found. Would someone check the quality of my tutorial, and if it's good enough? If its not formal enough or wrong, feel free to remove!
A non-official informal tutorial on solving sodoku with dancing links with example C implementation. —Preceding unsigned comment added by 18.104.22.168 (talk) 15:39, 24 July 2009 (UTC)
Difficult to understand, and suggestions for expansion
For some reason, I find that this article (combined with the Algorithm X article) difficult to understand, and does not give me quite sufficient details to implement DLX in my own codes. On the other hand, Knuth's paper is to the point, contains sufficient examples, making it easily understandable for me to implement DLX. My suggestion is to merge the two pages, and to reproduce the pseudocode from Knuth's paper on this page.
Further, the following two links could contain additional information that allows this article to be expanded:
- How to find a random solution using DLX in the context of generating full Sudoku grids.
- Algorithm Y by David Eppstein, which improves Algorithm X if the aim is to find a single solution. (I haven't properly digested this though.)
DLX is not synonymous with Dancing Links
If you read the Knuth paper, you'll see that "Dancing Links" is the technique for quickly undeleting an element from a doubly linked list. He claims it to be extremely useful in general and then shows an example by applying it to Algorithm X. He say, "When algorithm X is implemented in terms of dancing links, let’s call it algorithm DLX." Ben (talk) 10:02, 27 March 2015 (UTC)