Algorithm For Finding A Longest Increasing Subsequence
First, execute the sorting algorithm as described above. The number of piles is the length of a longest subsequence. Whenever a card is placed on top of a pile, put a back-pointer to the top card in the previous pile (that, by assumption, has a lower value than the new card has). In the end, follow the back-pointers from the top card in the last pile to recover a decreasing subsequence of the longest length; its reverse is an answer to the longest increasing subsequence algorithm.
S. Bespamyatnikh and M. Segal give a description of an efficient implementation of the algorithm, incurring no additional asymptotic cost over the sorting one (as the back-pointers storage, creation and traversal require linear time and space). They further show how to report all the longest increasing subsequences from the same resulting data structures.
Read more about this topic: Patience Sorting
Famous quotes containing the words finding, longest and/or increasing:
“At the age of twelve I was finding the world too small: it appeared to me like a dull, trim back garden, in which only trivial games could be played.”
—Elizabeth Bowen (18991973)
“For the longest time, marriage has had a guilty conscience about itself. Should we believe it?Yes, we should believe it.”
—Friedrich Nietzsche (18441900)
“As men get on in life, they acquire a love for sincerity, and somewhat less solicitude to be lulled or amused. In the progress of the character, there is an increasing faith in the moral sentiment, and a decreasing faith in propositions.”
—Ralph Waldo Emerson (18031882)