(8) Given the position(x, y) of a knight on an 8X8 chess board, what is the probability that it stays within the chess board after n moves? - Quora



(8) Given the position(x, y) of a knight on an 8X8 chess board, what is the probability that it stays within the chess board after n moves? - Quora

This is a problem from Topcoder: ChessKnight Problem Statement
A nice explanation of the solution can be found in the editorial here: 2005 TopCoder Collegiate Challenge

The problem can be solved if we write a function:
1  
double FindProbability(x, y, step)


where
(x,y)
is the position of the knight on the chess board, and
step
is the number of steps remaining.

Given a position (x,y), the knight can move to 8 other locations. Hence, the probability that the knight will move to each of those 8 positions is 1/8.

Base cases:
There are 2 possible base cases:
  1. If the position (x,y) is outside the board, then the probability that it is within the board is 0. So we just
    return 0;
    in this case
  2. If step == 0, then we have no more moves left. In this case if the passed parameter (x,y) is within the board, then we
    return 1;

Recursion:
Once the base cases are figured out, it is easy to see that the recursion would be something like:


FindProbability(x, y, step) = 8i=1( FindProbability(next_x, next_y, step-1) ) / 8.0
where next_x, next_y are the possible next positions of the knight at position (x,y).

Memoization:
There are a lot of overlapping computations in the above recursion. There might be numerous calls to  the function
FindProbability
with the same parameters. In order to prevent recomputing these values again and again, we can simply cache the computed values every time we find them and just return this value for subsequent function calls with the same parameters.

For this, a 3D array
double 
memo
[
8
][
8
][
MAX_MOVES
]
is maintained, and the computed values are stored in the array.

Read full article from (8) Given the position(x, y) of a knight on an 8X8 chess board, what is the probability that it stays within the chess board after n moves? - Quora


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