Set Partition Generation | Algorithms Notes



Set Partition Generation | Algorithms Notes

Design an algorithm to generate all partition of a set. Solution: We represent each set partition by a  restricted growth string  c, where c[i] is the number of the set that i-th element belongs to. Initially, all elements are in the first set. To find the next partition, we find the right most element so that c[i] is less than c[j] + 1, for some j < i. Then, we increment c[i] by one and set c[k] to one for all k > i. One easy recursive version is proposed in [1]. Optimized iterative version can be found in [2]. Minimal change order can be found in [3]. [1] M. C. Er, " A fast algorithm for generating set partitions," The Computer Journal Volume 31 Issue 3, June 1988 Pages 283 – 284 [2] B. Djokic M. Miyakawa S. Sekiguchi I. Semba I. Stojmenovic, "A fast iterative algorithm for generating set partitions," The Computer Journal Volume 32 Issue 3, June 1989 Pages 281-282 [3] Richard Kaye, "A gray code for set partitions," Information Processing Letters Volume 5, Issue 6, December 1976,

Read full article from Set Partition Generation | Algorithms Notes


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts