科学网―皇后也疯狂:如何在1分钟内摆放300万个皇后 - 江贺的博文



科学网―皇后也疯狂:如何在1分钟内摆放300万个皇后 - 江贺的博文

我们知道,在国际象棋中,皇后可以在行、列和对角线上行走。那么考虑一下:如何在一个N * N 的棋盘上放置 N个皇后,使得每行、每列和每条对角线上不存在2个或2个以上的皇后。这实际上就是经典的N-皇后问题。N-皇后问题是人工智能领域中一个经典的组合问题,在包括VLSI和交通控制等问题上具有广泛的应用。图1 给出了包含4个皇后的4-皇后问题的例子。图1 (a)给出了一个违反了约束的解的例子。可以发现,每一行、每一列上均只有1个皇后,但是第1列和第2列的两个皇后在正对角线方向上违反了约束。而图1 (b)给出了一个合法解,在每一行、每一列均只有1个皇后,而且在正对角线、负对角线方向上最多只有一个皇后。

N-皇后问题是我们在数据结构和算法类的课程上经常遇到的一个问题,它的经典求解方法是采用回溯的方法,可以产生所有的可行解,但是实际上运行时间非常长,能够解决的问题规模相对非常小。有没有一种方法,可以在极短的时间内求解上百万个皇后的N-皇后问题?答案是可以,用局部搜索!Rok Sosic和Jun Gu (顾钧)在20余年前提出的系列快速局部搜索算法可以在极短的时间内,求解百万量级的N-皇后问题。

Read full article from 科学网―皇后也疯狂:如何在1分钟内摆放300万个皇后 - 江贺的博文


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