جاوا میں گراف کے لیے ڈیپتھ فرسٹ سرچ یا ڈی ایف ایس کو کیسے نافذ کیا جائے؟

Jawa My Graf K Ly Ypt Frs Srch Ya Y Ayf Ays Kw Kys Nafdh Kya Jay



ڈیپتھ فرسٹ سرچ (DFS) ایک گراف ٹراورسل سرچنگ الگورتھم ہے جو روٹ نوڈ سے ہر برانچ کو تلاش کرنا شروع کرتا ہے اور پھر بیک ٹریکنگ سے پہلے گراف کی ہر برانچ کے ساتھ گزرنے کے لیے ہر ممکن حد تک گہرائی میں جاتا ہے۔ اس تلاش کو لاگو کرنا آسان ہے اور دیگر ٹراورسل الگورتھم کے مقابلے میں کم میموری استعمال کرتا ہے۔ یہ ایک منسلک جزو میں تمام نوڈس کا دورہ کرتا ہے اور دو نوڈس کے درمیان راستے کو چیک کرنے میں مدد کرتا ہے۔ DFS ڈائریکٹڈ ایکائیلک گراف (DAG) جیسے گراف کے لیے ٹاپولوجیکل چھانٹی بھی انجام دے سکتا ہے۔

یہ مضمون فراہم کردہ درخت یا گراف کے لیے DFS کو نافذ کرنے کے طریقہ کار کو ظاہر کرتا ہے۔

جاوا میں گراف کے لیے ڈیپتھ فرسٹ سرچ یا ڈی ایف ایس کو کیسے نافذ کیا جائے؟

DFS بنیادی طور پر ہر برانچ/ورٹیکس کو بالکل ایک بار دیکھ کر گراف تلاش کرنے کے لیے استعمال ہوتا ہے۔ یہ گراف میں سائیکلوں کا پتہ لگا سکتا ہے یا ان کی شناخت کر سکتا ہے جو تعطل کو روکنے میں مدد کرتا ہے۔ یہ پہیلیاں یا بھولبلییا کے مسائل کو حل کرنے کے لیے استعمال کیا جا سکتا ہے۔ ڈی ایف ایس کو گراف الگورتھم، ویب کرالنگ، اور کمپائلر ڈیزائن میں لاگو/استعمال کیا جا سکتا ہے۔







وضاحت کے لیے، Depth First Search یا DFS کے نیچے دیے گئے کوڈ پر جائیں:



کلاس گراف {
نجی لنکڈ لسٹ addNode [ ] ;
نجی بولین طے شدہ [ ] ;

گراف ( int چوٹی ) {
addNode = نئی لنکڈ لسٹ [ چوٹی ] ;
طے شدہ = نئی بولین [ چوٹی ] ;

کے لیے ( int میں = 0 ; میں < چوٹی ; میں ++ )
addNode [ میں ] = نئی لنکڈ لسٹ ( ) ;
}
باطل ایڈج ( int src int شروع ) {
addNode [ src ] . شامل کریں ( شروع ) ;
}

مندرجہ بالا کوڈ کی تفصیل:



  • سب سے پہلے، کلاس کا نام ' گراف 'بنایا جاتا ہے۔ اس کے اندر، اعلان کرتا ہے ' لنکڈ لسٹ 'نام' addNode[] اور بولین قسم کی صف کا نام ' طے شدہ[] '
  • اگلا، ' کے کنسٹرکٹر کے لئے عمودی کو منتقل کریں گراف 'کلاس بطور پیرامیٹر۔
  • اس کے بعد، ' کے لیے منتخب برانچ کے ہر نوڈ سے گزرنے کے لیے لوپ بنایا گیا ہے۔
  • آخر میں، باطل قسم ' addEdge() ” کو عمودی کے درمیان کناروں کو شامل کرنے کے لیے استعمال کیا جاتا ہے۔ یہ فنکشن دو پیرامیٹرز لیتا ہے: ورٹیکس کا ماخذ ' src 'اور منزل کی چوٹی' شروع '

گراف بنانے کے بعد، اب ہم اوپر بنائے گئے گراف کے لیے ڈیپتھ فرسٹ سرچ یا ڈی ایف ایس کا کوڈ شامل کریں:





باطل ڈی ایف ایس ( int چوٹی ) {
طے شدہ [ چوٹی ] = سچ ;
سسٹم . باہر . پرنٹ کریں ( چوٹی + ' ) ;
تکرار کرنے والا یہ = addNode [ چوٹی ] . listIterator ( ) ;
جبکہ ( یہ. ہے اگلا ( ) ) {
int adj = یہ. اگلے ( ) ;
اگر ( ! طے شدہ [ adj ] )
ڈی ایف ایس ( adj ) ;
}
}

مندرجہ بالا کوڈ بلاک میں:

  • سب سے پہلے، ' DFS() 'فنکشن بنایا گیا ہے جو حاصل کر رہا ہے' چوٹی 'پیرامیٹر کے طور پر۔ اس چوٹی کو بطور ملاحظہ کیا گیا نشان زد کیا گیا ہے۔
  • اگلا، 'کا استعمال کرتے ہوئے ملاحظہ کردہ چوٹی کو پرنٹ کریں out.print() 'طریقہ.
  • پھر، ایک مثال بنائیں ' تکرار کرنے والا ” جو موجودہ ورٹیکس کے ملحقہ عمودی پر اعادہ کرتا ہے۔
  • اگر چوٹی کا دورہ نہیں کیا جاتا ہے، تو یہ اس چوٹی کو ' DFS() فنکشن

اب آئیے ایک ' مرکزی() گراف بنانے کے لیے فنکشن کا حصہ اور پھر اس پر DFS لاگو کریں:



عوام جامد باطل مرکزی ( تار args [ ] ) {
گراف ک = نئی گراف ( 4 ) ;
ک ایڈج ( 0 , 1 ) ;
ک ایڈج ( 1 , 2 ) ;
ک ایڈج ( 2 , 3 ) ;
ک ایڈج ( 3 , 3 ) ;
سسٹم . باہر . پرنٹ ایل این ( 'فالونگ ڈیپتھ فرسٹ ٹراورسل ہے' ) ;
ک ڈی ایف ایس ( 1 ) ;
}
}

مندرجہ بالا کوڈ کی وضاحت:

  • سب سے پہلے، ایک آبجیکٹ بنائیں ' ک ' کے لئے ' گراف() 'طریقہ.
  • اگلا، ' addEdge() ' کا طریقہ ایک سے زیادہ چوٹیوں کے درمیان کناروں کو شامل کرنے کے لیے استعمال کیا جاتا ہے۔ یہ ہمارے گراف کا ڈھانچہ بناتا ہے۔
  • آخر میں، کسی بھی عمودی قدر کو دلیل کے طور پر پہلے سے تخلیق شدہ ' DFS() فنکشن اس عمودی راستے کو جڑ سے تلاش کرنے کے لیے، گہرائی سے پہلے تلاش کے الگورتھم کا استعمال کریں۔ مثال کے طور پر، 'کی قدر 1 'کو منتقل کیا جاتا ہے' DFS() فنکشن

تالیف کے مرحلے کے اختتام کے بعد:

آؤٹ پٹ ظاہر کرتا ہے کہ گہرائی سے پہلی تلاش کامیابی کے ساتھ نافذ کی گئی ہے۔

نتیجہ

ڈیپتھ فرسٹ سرچ ایک گراف ٹراورسل الگورتھم ہے جو بہت سے گراف الگورتھم کی بنیاد بناتا ہے جیسے مختصر ترین راستہ تلاش کرنا، درختوں کو پھیلانا، اور کنیکٹیویٹی تجزیہ۔ یہ روٹ نوڈ سے شروع ہوتا ہے اور پھر بیک ٹریکنگ سے پہلے لیو نوڈ یا اس برانچ کے آخری نوڈ تک ہر ممکن حد تک گہرائی میں جاتا ہے۔ اس مضمون نے جاوا میں گراف کے لیے ڈیپتھ فرسٹ سرچ یا ڈی ایف ایس کو لاگو کرنے کے طریقہ کار کو ظاہر کیا ہے۔