Greedy টেকনিক ঃ
সমস্যা সমাধানের জন্য আমরা সবসময়ই একটা না হয় আরেকটা এভাবে বিভিন্ন পথ খুঁজতে থাকি । এরকম প্রতিটি পথে আমরা সমস্যাটির সবচেয়ে ভালো সমাধান নিয়ে চিন্তা করি যে কিভাবে সমস্যাটি থেকে আমরা সন্তোষজনক ফলাফল বের করতে পারি । Greedy এমনই একটা টেকনিক যা বর্তমান সময়ে আমাদেরকে সবচেয়ে সন্তোষজনক ফলাফল দিয়ে থাকে । তবে এটি পরবর্তীতে সন্তোষজনক নাও হতে পারে । তাই বর্তমান সময়ে সবচেয়ে সন্তোষজনক ফলাফল পেতে আমরা Greedy টেকনিক ব্যবহার করে থাকি । এই টেকনিককে আমরা নিজেদের মত করে implement করতে পারি । সমস্যা সমাধানের ভিন্নতার কারণে আমরা কখনও simply , কখনও dynamically আবার কখনও বা recursively ; Greedy টেকনিক ব্যবহার করে থাকি ।
Activity Selection Problem :
Problem টি হলো আমাদের কাছে কিছু Activity আছে এবং প্রতিটি Activity র start time অর্থাৎ সেই Activity কখন শুরু হয় ও finish time অর্থাৎ সেটি কখন শেষ হয় তাও দেওয়া আছে । আমাদেরকে বের করতে হবে সর্বোচ্চ কত সংখ্যক Activity select করতে পারবো যেন একটি Activity অন্য Activity কে overlap না করে । Overlap করার অর্থ হলো , যদি এমন হয় যে আমরা একটি Activity select করলাম যার start time 1 ও finish time 4 তাহলে আমরা পরবর্তীতে 1 ও 4 এই সময়ের মধ্যে শুরু হওয়া কোন Activity কে আর select করতে পারবোনা । উদাহরণস্বরূপ নিচে কিছু Activity এবং তাদের start time ও finish time দেওয়া হলো ঃ
প্রথমে আমরা যে কাজটি করবো তা হচ্ছে end time এর ভিত্তিতে Activity গুলো sort করবো । sort করার পর sorted Activity গুলো এরকম হবে ...
তা হলে যে Activity গুলো তাড়াতাড়ি শেষ হবে ঠিক ঐ সময়ে বা তার পরে শুরু হওয়া আরেকটি Activity আমরা select করতে পারবো এবং এভাবেই maximum সংখ্যক Activity select করতে পারবো । এই পদ্ধতিতে আমরা সর্বোচ্চ 4 টি Activity select করতে পারবো । এখানেই Greedy টেকনিক ব্যবহার করা হয়েছে ।
select করা Activity number গুলো : 3,7,2,9 ।
আবার 3,7,10,9 বা 8,7,2,9 বা 8,7,10,9 এই combination এর Activity ও select করা যায় ।
Code Implementation :
Code এর output এ select করা Activity গুলো দেখাবে 3,7,2,9 । কারণ বের করার দায়িত্ব আপনাদের উপর ছেড়ে দিলাম ।
Happy Coding
Reference :
সমস্যা সমাধানের জন্য আমরা সবসময়ই একটা না হয় আরেকটা এভাবে বিভিন্ন পথ খুঁজতে থাকি । এরকম প্রতিটি পথে আমরা সমস্যাটির সবচেয়ে ভালো সমাধান নিয়ে চিন্তা করি যে কিভাবে সমস্যাটি থেকে আমরা সন্তোষজনক ফলাফল বের করতে পারি । Greedy এমনই একটা টেকনিক যা বর্তমান সময়ে আমাদেরকে সবচেয়ে সন্তোষজনক ফলাফল দিয়ে থাকে । তবে এটি পরবর্তীতে সন্তোষজনক নাও হতে পারে । তাই বর্তমান সময়ে সবচেয়ে সন্তোষজনক ফলাফল পেতে আমরা Greedy টেকনিক ব্যবহার করে থাকি । এই টেকনিককে আমরা নিজেদের মত করে implement করতে পারি । সমস্যা সমাধানের ভিন্নতার কারণে আমরা কখনও simply , কখনও dynamically আবার কখনও বা recursively ; Greedy টেকনিক ব্যবহার করে থাকি ।
Activity Selection Problem :
Problem টি হলো আমাদের কাছে কিছু Activity আছে এবং প্রতিটি Activity র start time অর্থাৎ সেই Activity কখন শুরু হয় ও finish time অর্থাৎ সেটি কখন শেষ হয় তাও দেওয়া আছে । আমাদেরকে বের করতে হবে সর্বোচ্চ কত সংখ্যক Activity select করতে পারবো যেন একটি Activity অন্য Activity কে overlap না করে । Overlap করার অর্থ হলো , যদি এমন হয় যে আমরা একটি Activity select করলাম যার start time 1 ও finish time 4 তাহলে আমরা পরবর্তীতে 1 ও 4 এই সময়ের মধ্যে শুরু হওয়া কোন Activity কে আর select করতে পারবোনা । উদাহরণস্বরূপ নিচে কিছু Activity এবং তাদের start time ও finish time দেওয়া হলো ঃ
Activity number
|
Start Time
|
Finish Time
|
1
|
3
|
8
|
2
|
8
|
11
|
3
|
1
|
4
|
4
|
2
|
13
|
5
|
5
|
9
|
6
|
0
|
6
|
7
|
5
|
7
|
8
|
3
|
5
|
9
|
12
|
14
|
10
|
8
|
12
|
11
|
6
|
10
|
প্রথমে আমরা যে কাজটি করবো তা হচ্ছে end time এর ভিত্তিতে Activity গুলো sort করবো । sort করার পর sorted Activity গুলো এরকম হবে ...
তা হলে যে Activity গুলো তাড়াতাড়ি শেষ হবে ঠিক ঐ সময়ে বা তার পরে শুরু হওয়া আরেকটি Activity আমরা select করতে পারবো এবং এভাবেই maximum সংখ্যক Activity select করতে পারবো । এই পদ্ধতিতে আমরা সর্বোচ্চ 4 টি Activity select করতে পারবো । এখানেই Greedy টেকনিক ব্যবহার করা হয়েছে ।
select করা Activity number গুলো : 3,7,2,9 ।
আবার 3,7,10,9 বা 8,7,2,9 বা 8,7,10,9 এই combination এর Activity ও select করা যায় ।
Code Implementation :
Code এর output এ select করা Activity গুলো দেখাবে 3,7,2,9 । কারণ বের করার দায়িত্ব আপনাদের উপর ছেড়ে দিলাম ।
Happy Coding

Reference :
- Introduction to Algorithms by Thomas H. Cormen
0 comments: (+add yours?)
Post a Comment