> For the complete documentation index, see [llms.txt](https://phitron.gitbook.io/algorithm/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://phitron.gitbook.io/algorithm/module_1/_-1.md).

# মডিউল ১\_১ঃ গ্রাফের বেসিক

## ট্রি VS গ্রাফ

<table data-full-width="false"><thead><tr><th>ট্রি</th><th>গ্রাফ</th></tr></thead><tbody><tr><td><p><img src="https://1548341763-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjliRFwU9cGQFGljHYgOZ%2Fuploads%2F2TP972HHJvDSutetkszc%2Fimage.png?alt=media&amp;token=3b1a2c70-0dc6-48b7-b14d-fb9282e0cb6a" alt="" data-size="original">    <br><br></p><p></p><p>ট্রিতে  multiple edge থাকে নাহ। </p></td><td><img src="https://1548341763-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjliRFwU9cGQFGljHYgOZ%2Fuploads%2FBdjY3mMLQu9Ar6r1P720%2Fimage.png?alt=media&amp;token=eb533daf-3bae-46a3-8ad5-851bc7b8c7a7" alt=""><br>গ্রাফে multiple edge থাকে।</td></tr><tr><td><p><img src="https://1548341763-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjliRFwU9cGQFGljHYgOZ%2Fuploads%2Fy0cLDcjjk1Sw8fg0QwT1%2Fimage.png?alt=media&amp;token=c4d5b883-86cf-458e-bcd9-9e9f1dbfe9ec" alt="" data-size="original"><br><br>ট্রিতে multiple way থাকে নাহ। অর্থাৎ</p><p>একটি নোড থেকে আরেকটি নোডে যেতে শুধুমাত্র একটি way থাকে।</p><p><br>এইখানে A নোড থেকে E নোডে যেতে শুধুমাত্র <br>A->B->E এই পথটি দিয়ে যাওয়া যাবে।</p></td><td><p><img src="https://1548341763-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjliRFwU9cGQFGljHYgOZ%2Fuploads%2F4zPuyNWI6KeP3jsitOqn%2Fimage.png?alt=media&amp;token=28c87b77-0b13-472b-8aa0-87fe76074335" alt="" data-size="original"><br><br>গ্রাফে multiple way থাকে । অর্থাৎ</p><p>একটি নোড থেকে আরেকটি নোডে যেতে  এক  বা একাধিক   way থাকে।<br><br>এইখানে A নোড থেকে C নোডে যেতে <br>A->B->D->C এবং A->C এই ২টি পথ আছে। </p></td></tr><tr><td><img src="https://1548341763-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjliRFwU9cGQFGljHYgOZ%2Fuploads%2Fhi2AdC65BXujSBn4nb5R%2Fimage.png?alt=media&amp;token=c8c518f4-1c9e-466c-b602-4a548ddd7458" alt="" data-size="original"><br><br>ট্রিতে Cycle পাওয়া যায় নাহ।</td><td><img src="https://1548341763-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjliRFwU9cGQFGljHYgOZ%2Fuploads%2FhBI9XLvqn9CYxg5cUNKm%2Fimage.png?alt=media&amp;token=a4711bc7-2347-422a-8bb5-58df50512676" alt="" data-size="original"><br><br>গ্রাফে Cycle পাওয়া যায়। </td></tr><tr><td><img src="https://1548341763-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjliRFwU9cGQFGljHYgOZ%2Fuploads%2FU7Km2aeSHMFU7cvCHFLu%2Fimage.png?alt=media&amp;token=d228d1f0-3da1-4572-9ba7-1980377528ce" alt="" data-size="original"><br><br>ট্রিতে edge direction শুধু একমুখী হয়, অর্থাৎ edge diraction টি parent থেকে child এর দিকে হয়ে থাকে। <br><br>উপরে parent নোড A থেকে child নোড B, C দিকে edge গুলোর direction রয়েছে। </td><td><img src="https://1548341763-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjliRFwU9cGQFGljHYgOZ%2Fuploads%2FtbwzuY8hBYFJPlGy2zAt%2Fimage.png?alt=media&amp;token=c01f52d9-71e2-408d-9ed4-80ae938ff087" alt="" data-size="original"> <br><br>গ্রাফে edge direction একমুখী ও উভয়মুখী এই দুই ধরনের হতে পারে। <br><br>উপরে A নোড থেকে B নোডের দিকে edge direction টি উভয়মুখী , অর্থাৎ A নোড থেকে B নোডে যাওয়া যাবে এবং B নোড থেকে A নোডে যাওয়া যাবে।</td></tr></tbody></table>

## গ্রাফের টাইপগুলো

| টাইপগুলো                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | উদাহরণ                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <p>Undirected Graph<br><br>উদাহরণে দেয়া গ্রাফটির edge গুলোর মধ্যে কোন direction নাই, এইটি একটি  undirected Graph। <br>এইখানে edge গুলোর মধ্যে connection টি উভয়মুখী , অর্থাৎ A নোড থেকে B নোডে যাওয়া যাবে এবং B নোড থেকে A নোডে যাওয়া যাবে। </p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | ![](https://1548341763-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjliRFwU9cGQFGljHYgOZ%2Fuploads%2FUNYkHaGCAmJ4YKJoJ6Jx%2Fimage.png?alt=media\&token=87578d75-cc97-453d-aae4-f863919e7e74)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| <p>Directed Graph<br><br>উদাহরণে দেয়া গ্রাফটির edge গুলোর মধ্যে direction আছে, তাই সেইটি একটি Directed Graph।  এইখানে A নোড থেকে C নোডে যাওয়া যাবে কিন্তু C নোড থেকে A নোডে যাওয়া যাবে নাহ, যেহেতু A নোড থেকে C নোডের edge direction দেয়া আছে  A->C ।</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | <img src="https://1548341763-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjliRFwU9cGQFGljHYgOZ%2Fuploads%2FC9KZECwEIsNwc2xuX9gR%2Fimage.png?alt=media&amp;token=6607c13f-2d2b-4d89-aecf-a051c4220fd1" alt="" data-size="original">                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| <p>Weighted Graph<br><br>Weighted graph এ দুইট নোডের edge এর মধ্যে cost দেয়া থাকে , এখানে cost বলতে ( সময় ,  টাকা, সম্পদ )  যেকোনো কিছু হতে পারে। </p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | <img src="https://1548341763-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjliRFwU9cGQFGljHYgOZ%2Fuploads%2FtGbwADyPu9p7Yqbz1GWC%2Fimage.png?alt=media&amp;token=dce68d89-b8c0-4dee-bf34-aab281d0099c" alt="" data-size="original">                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| <p>Unweighted Graph<br><br>Unweighted graph এ দুইট নোডের edge এর মধ্যে cost দেয়া থাকে না। তাই আমরা প্রতিটি edge এর cost Unweighted graph এ একই  ধরে নিতে পারি। </p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | <img src="https://1548341763-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjliRFwU9cGQFGljHYgOZ%2Fuploads%2FlHEhxLmqjOM6Afk0xAVP%2Fimage.png?alt=media&amp;token=8e6235c3-6085-4ab2-8dbc-aa3f49998deb" alt="" data-size="original">                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| <p> Cycle ( undirected graph)<br><br>Undirected graph দিয়ে Cycle বানাতে হলে অবশ্যই ৩টি নোডের প্রয়োজন হয়। <br><br><br><br><br><br><br><br>Cycle ( directed graph)<br><br>Directed graph এর মধ্যে একে অপরে সাথে edge থাকলেই cycle হবে এমন না, edge গুলোর direction এর উপর নির্ভর করে cycle হবে কিনা। <br><br>উদাহরণে দেয়া ২য় গ্রাফটি direct graph যেইটিতে  cycle পাওয়া যাচ্ছে।  A->C->B->A এইভাবে A নোড থেকে C নোড , এরপর C নোড থেকে D নোড, এরপর D নোড থেকে A নোডে যাওয়া যাবে। একটি নোড থেকে যাত্রা শুরু করে আবার সেই নোডটিতে ফিরে আসা যাচ্ছে, তাই গ্রাফটিতে cycle আছে। <br><br>উদাহরণে দেয়া ৩য় গ্রাফটি direct graph যেইটিতে  cycle পাওয়া যাচ্ছে না। কারণ এই গ্রাফটিতে  একটি নোড থেকে যাত্রা শুরু করে আবার সেই নোডটিতে ফিরে আসা যাচ্ছে না। </p> | <p> Cycle ( undirected graph) <img src="https://1548341763-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjliRFwU9cGQFGljHYgOZ%2Fuploads%2FNeVDz4vyOu15O9qNGtzO%2Fimage.png?alt=media&amp;token=a83b8f85-ae71-46f1-b99e-34af786b23bd" alt=""><br><br>Cycle ( directed graph)<br><img src="https://1548341763-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjliRFwU9cGQFGljHYgOZ%2Fuploads%2FQlYlfQ8ddgMtrPh6btnJ%2Fimage.png?alt=media&amp;token=0e1b72f5-c4bc-4c9b-853c-914a50364c6c" alt=""><br><br>No Cycle ( directed graph)<br><img src="https://1548341763-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjliRFwU9cGQFGljHYgOZ%2Fuploads%2FhovPcFpOJPUaqZJEcTKf%2Fimage.png?alt=media&amp;token=19b7af18-cc0c-40c7-9ded-33928c30ccb2" alt=""><br></p> |
