Sponsor

ব্রেডথ ফার্স্ট সার্চ অ্যালগরিদম - Breadth-first search

0
19

আমাদের বাস্তব  জীবনের বেশির ভাগ সমস্যাকে গ্রাফ আকারে রিপ্রেজেন্ট করা যায়। এরপর গ্রাফ সার্চ করে সমস্যার সমাধান করা যায়। গ্রাফ সার্চ করার অনেক গুলো পদ্ধতি রয়েছে। সহজ একটা পদ্ধিতি হচ্ছে ব্রেডথ ফার্স্ট সার্চ। Breadth মানে আমরা ধরব কাছে বা পাশে।

এ লেখাটি পড়ার আগে আমাদের গ্রাফ নিয়ে কিছু জ্ঞান লাগবে। গ্রাফ থিওরি, গ্রাফের রিপ্রেজেন্টেশন এবং ইমপ্লিমেন্টেশন লেখাটি পড়লে মোটামুটি ধারণা পাওয়া যাবে।

ব্রেডথ ফার্স্ট সার্চে গ্রাফের ইনিশিয়াল নড বা রুট নড থেকে আমরা সার্চ শুরু করি। এরপর সার্চ করি হচ্ছে রুট নডের সাথে যে সব নড কানেক্টেড, সেগুলো এভাবে প্রথম লেভেলে সার্চ করি, এরপর দ্বিতীয় লেভেল এভাবে শেষ পর্যন্ত।

ব্রেডথ ফার্স্ট সার্চ করার জন্য Queue নামক ডেটা স্ট্র্যাকচার ব্যবহার করা হয়। কিউ হচ্ছে First In First Out ডেটা স্ট্র্যাকচার। মানে হচ্ছে কিউতে আমরা সবার আগে যে ডেটা ঢুকাবো, ঐটাই প্রথমে বের করব। যেমন টিকেট কাটার লাইন। লাইন বা কিউর সবার আগে যে থাকে, সেই সবার আগে টিকেট কিনে বের হয়ে যায়।

নিচের অ্যানিমেশনটা দেখি, ব্রেডথ ফার্স্ট সার্চ কিভাবে হয়, তার ভিজুয়াল চিত্রঃ

image_proxy.php?url=https%3A%2F%2Fupload.wikimedia.org%2Fwikipedia%2Fcommons%2F5%2F5d%2FBreadth-First-Search-Algorithm.gifসোর্সঃ উইকিপিডিয়া

Breadth-first search Traversal:

simple-graph

আমরা ব্রেডথ ফার্স্ট সার্চ এই গ্রাফটা ভ্রমণ করব। এ জন্য প্রথমে আমরা রুট নড দিয়ে শুরু করব। যেমন 1 হচ্ছে আমাদের রুট নড। এটাকে কিউতে ঢুকাবো। তাহলে কিউতে থাকে শুধু 1।

এবার 1 ভিজিট করে এর সাথে কানেক্টেড নড গুলো কিউতে ঢুকাবো। 2,3,4 এবং কিউ থেকে 1 রিমুভ করব। তাহলে কিউতে থাকবে 2,3,4।

কিউর নিয়ম হচ্ছে যে আগে কিউতে ঢুকবে, আমরা তাকে সুযোগ দিব। যেহেতু কিউতে 2 আগে আছে, তাহলে আমরা দুই এর সাথে কানেক্টেড নড গুলোর ভিজিট করব। দুই এর সাথে কানেক্টেড হচ্ছে 1 এবং 5। 1 যেহেতু আমরা একবার ভিজিট করে ফেলছি, তাই আমরা 1 এ আর ভিজিট করব না। সুতরাং আমরা যে সব নড ভিজিট করে ফেলছি, তার লিস্ট রাখতে হচ্ছে। আমরা অ্যারে বা যে কোন লিস্টে ভিজিটেড নড গুলো রাখতে পারি।

আমাদের কিউতে 5 ঢুকাবো এবং কিউ থেকে ২ বের করে দিব। তাহলে আমাদের কিউতে থাকবে 3,4,5।

কিউতে এখন সামনে রয়েছে 3। তাই আমরা তিন এর সাথে যে সব নড কানেক্টেড 3 এর সাথে কানেক্টেড 1,6,7। যেহেতু 1 এর আগে একবার ভিজিট করা হয়েছে, তাই আমরা কিউতে 1 কে ঢুকাবো না। বাকি থাকে 6,7, এগুলো আমরা কিউতে ঢুকাবো। কিউ থেকে 3 বের করে দিব। তাহলে আমাদের কিউতে থাকবে 4,5,6,7।

এবার কিউতে আগে রয়েছে 4। চারের সাথে কানেক্টেড হচ্ছে 1 এবং 8। যেহেতু 1 আমাদের ভিজিটেড লিস্টে রয়েছে, তাই আমরা শুধু 8 কে কিউতে ঢুকাবো এবং 4 কে কিউ থেকে বের করব। এভাবে বাকি নড গুলো ভিজিট করব।

ব্রেডথ ফার্স্ট সার্চ ভ্রমন করার পর যেসব নড আমরা ভিজিট করেছি, সেগুলো হবে আমাদের আউটপুট। যেমন প্রথমে আমরা 1 ভিজিট করেছি, এরপর 2, এরপর 3 … এভাবে 10 পর্যন্ত। তাহলে আমাদের আউটপুট হবে 1,2,3….10 যে নড আগে ভিজিট করেছি, সেটা থাকবে আগে।

ব্রেডথ ফার্স্ট সার্চ এর ব্যবহারঃ অনেক জায়গায় ব্রেডথ ফার্স্ট সার্চ অ্যালগরিদম ব্যবহার করা যায়। আমরা সিম্পল একটা ব্যবহারের কথা চিন্তা করি। যেমন আমরা উপরের গ্রাফটির কথাই চিন্তা করি। আমাদেরকে গ্রাফটি দিয়ে বলা হল এই গ্রাফে 7 আছে কিনা। তখন আমরা সার্চ করতে থাকব। এক সময় 7 পেয়ে যাবো। তখন আমারা উত্তর দিব, হ্যা, এই গ্রাফে 7 রয়েছে। আর যখনই আমরা 7 পেয়ে যাবো, তখনই আমরা সার্চ বন্ধ করে দিব। মানে হচ্ছে আমরা 7 এর পর আর কোন সার্চ করব না। গ্রাফটি দিয়ে আমাদের যদি জিজ্ঞেস করত গ্রাফে 1 আছে কিনা জানাতে, তখন আমরা প্রথম নডই দেখব 1। তখন সাথে সাথেই বলব, হ্যা, এক রয়েছে এবং সেখানেই আমরা সার্চ বন্ধ করব।

কিউতে কোন ডেটা ঢুকানোকে আমরা বলি Enqueue। আর কিউ থেকে কোন ডেটা বের করাকে আমরা বলি Dequeue। ব্রেডথ ফার্স্ট সার্চ অ্যালগরিদমের সুডোকোড নিচে দেওয়া হলো। সোর্সঃ উইকিপিডিয়া।

Breadth-First-Search(Graph, root):

    for each node n in Graph:
        n.distance = INFINITY
        n.parent = NIL

    create empty queue Q

    root.distance = 0
    Q.enqueue(root)

    while Q is not empty:
        current = Q.dequeue()
        for each node n that is adjacent to current:
            if n.distance == INFINITY:
                n.distance = current.distance + 1
                n.parent = current
                Q.enqueue(n)

এক বইতে এক রকম করে এই সুডোকোড লেখা হয়, মূল কনসেফট একই রকম।

কমপ্লেক্সিটি: ব্রেডথ ফার্স্ট সার্চ করার সময় আমরা প্রতিটি নড [V] একবার এবং প্রতিটা এজ [E] এ একবার গিয়েছি, তাই কমপ্লেক্সিটি হবে O(V+E)।

কমপ্লিটনেসঃ ব্রেডথ ফার্স্ট সার্চ কমপ্লিট যদি ফিনিট সংখ্যক নড থাকে।

Sponsor
Sponsor
Căutare
Categorii
Citeste mai mult
Tech
Oppo Find X10-এর দাম বাড়ছে ৬০ শতাংশ, ফাঁস হলো ইউরোপীয় মূল্
Share on FacebookShare on Twitter...
By Nettumi 2026-10-03 18:12:17 0 1
Nulled
বাংলাদেশ সশস্ত্র বাহিনী বোর্ড নিয়োগ বিজ্ঞপ্তি ২০২৬ | BASB Job Circular 2026
Rate this postবাংলাদেশ সশস্ত্র বাহিনী বোর্ড কর্তৃপক্ষ হতে বাংলাদেশ সশস্ত্র বাহিনী বোর্ড নিয়োগ...
By Nettumi 2026-09-18 09:28:28 0 53
Nulled
Nearby Stores Android v3.0.3 - Offers & Coupons, Events, Restaurant, Services & Booking App Source
Nearby Stores Android v3.0.3 – Offers & Coupons, Events, Restaurant, Services &...
By Nettumi 2026-09-18 03:31:05 0 48
Tech
স্কুইড গেম - টাকার খেলা, নাকি মরণের? | স্কুইড গেম রিভিউ - Banglatech24.com
(স্পয়লার অ্যালার্ট…) সেপ্টেম্বর ২০২১ এ নেটফ্লিক্সে মুক্তি পায় কোরিয়ান থ্রিলার সিরিজ...
By Nettumi 2026-09-25 10:20:04 0 54
Hacking Course
অতিরিক্ত সিমের নিবন্ধন বাতিল করতে বললো বিটিআরসি (সময় সীমিত)
বর্তমানে বাংলাদেশে মোবাইল ফোন ব্যবহার শুধু যোগাযোগের জন্যই নয়। ইন্টারনেট ব্রাউজিং, মোবাইল...
By Nettumi 2026-09-25 09:37:55 0 37
‎ ‎ ‎
Nettumi https://nettumi.com