Dynamic Programming - Distinct Paths between two points - Techie Me



Dynamic Programming - Distinct Paths between two points - Techie Me

Count the number of distinct paths between two points on a two dimensional co-ordinate plain

We are given two points x1, y1 and x2, y2 on a two dimensional co-ordinate plain. The task at hand is to count the number of distinct paths from x1, y1 to x2, y2.
Assumption: x2 is greater than x1 and y2 is greater than y1.
Restriction: We can only move either up or right one step at a time, we cannot trace back or down.

Here is a diagram to explain the problem in more detail:
xytraverse
In the diagram above Point1 has co-ordinates (2,1) and Point2 has co-ordinates (4,2). We are at Point1 and we have to reach Point2. We have to find out the total number of distinct way from Point1 to Point2.

The three paths shown in the diagram are the only possible distinct paths. The three paths are painted in RED , GREEN and PURPLE.

How to mathematically solve it?

I would like to show the mathematical way of finding this, as per the restriction defined above we can move only one step at a time. We have to move two steps (x2 – x1) in the right and one step (y2 – y1) in the up direction.

This is a simple problem of counting where we have two similar steps to be taken one at a time in the right direction and one step in the up direction. This is as good as picking (a + b) objects where a objects are of one type and b object is of second type.


Read full article from Dynamic Programming - Distinct Paths between two points - Techie Me


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