somewhere in... blog
x
ফোনেটিক ইউনিজয় বিজয়

যন্ত্র গণকের যন্তর মন্তর - ৩

১৯ শে নভেম্বর, ২০০৯ রাত ১:৩১
এই পোস্টটি শেয়ার করতে চাইলে :



(পর্ব ১) (পর্ব ২)

সাত্তার সারের ভাত ঘুম

শেষমেশ ভাত ঘুমটা আর জুত করে দেয়া গেলোনা ...

ক্লাস এইট সি-সেকশনের ক্লাস টিচার আবদুস সাত্তার স্যারের আজ মেজাজ বেজায় খারাপ। কলেজিয়েট স্কুলের সবচেয়ে বদমাশ ছাত্রদের ধরে ধরে ভরা হয়েছে এই শাখায়, আর এদের বাঁদরামি সামলাতে হয় উনাকেই। দুপুর পেরুলেই ক্লাস প্রায় ফাঁকা, ক’দিন আগে স্টেশন রোডের এক সিনেমা হল থেকে ৪০ জন ছাত্রকে হাতেনাতে ধরা হয়েছিলো। ইদানিং বেতেও কাজ হচ্ছে না, ছেলেপেলে অবস্থা বুঝে দুটো শার্ট পরে আসে যাতে ব্যথা না লাগে।

এহেন দুরন্ত ছাত্রদের সামলাতেই যেখানে দিন যায়, সেখানে হেড স্যার গোদের উপরে বিষফোঁড়ার মতো করে বাড়তি কাজ চাপিয়ে দিয়েছেন। সামনে স্কুলের বার্ষিক ক্রীড়া প্রতিযোগিতা, তার জন্য মার্চপাস্ট করাতে হবে ছাত্রদের দিয়ে; সাধারণত রশীদ স্যার এ কাজটা করেন, কিন্তু তিনি আজ ছুটিতে। তাই এই বাঁদরদের নিয়ে পিটি প্র্যাকটিস আজ তাঁকেই করতে হবে, কড়া এই দুপুরের রোদে। ছেলেপেলেগুলো প্রচন্ড দুষ্ট – আর তাদেরই কি না উচ্চতার ভিত্তিতে লাইন করে দাঁড় করিয়ে প্যারেড শেখাতে হবে।

প্রচন্ড খারাপ মেজাজ নিয়ে সাত্তার স্যার ক্লাসে ঢুকলেন। বান্দরকুলশিরোমণি ছাত্র শফিককে সামনে পেতেই বেতালেন খানিকক্ষণ। তাতেও মেজাজ ভালো হলো না। বাঁদরগুলোকে লাইন করে ঠিকমতো দাঁড়াতে বললে তারা উলটো মশকরা শুরু করে দেয়, কে কোথায় দাঁড়াবে, তা উনাকেই ঠিক করতে হবে।

সময় হাতে অল্প, এর মধ্যে ৫০টা বাঁদর ছাত্রকে কীভাবে তিনি উচ্চতার ভিত্তিতে সাজাবেন?

----

আসুন, আজ দেখা যাক, সাত্তার স্যারকে আমরা কীভাবে সাহায্য করতে পারি ...

সর্টিং বা বাছাইকরণ

বাছাই করা, অর্থাৎ ক্রমানুসারে সাজানো তথ্য বিশ্লেষণের একটি মৌলিক সমস্যা। এক গাদা সংখ্যাকে ছোট থেকে বড়, কিংবা বড় থেকে ছোট, অথবা অনেকগুলো নামকে বর্ণানুক্রমিকভাবে সাজানো – এরকম সমস্যা আমাদের প্রতিনিয়তই সমাধান করতে হয়। কম্পিউটার বিজ্ঞানে এই সমস্যাটির সমাধানের কৌশলগুলোকে বলে সর্টিং অ্যালগরিদম। আজ আমরা দেখবো এই সর্টিং এর কিছু সহজ কৌশল।

সিলেকশন সর্ট

এই সর্টিং কৌশলের মূল ধারণাটা খুব সহজ। তালিকাকে ছোট থেকে বড়তে সাজাতে হবে? তাহলে প্রথম ধাপে তালিকার সবচেয়ে ছোট সংখ্যাটা খুঁজে নিন। সেটাকে আলাদা করে রাখুন। এবার বাকি গুলো থেকে সবচেয়ে ছোটটি বেছে নিন, আগের সংখ্যাটির পরে রাখুন এটাকে। এভাবে প্রতি ধাপে তালিকার বাকি অংশের সবচেয়ে ছোট সংখ্যা বেছে বেছে নিয়ে পেছনে যোগ করতে থাকুন, তাহলেই পরিশেষে পেয়ে যাবেন ছোট থেকে বড়তে বাছাই করা একটা তালিকা।

ধরা যাক, সাত্তার স্যারের সামনে আছে রফিক, শফিক, হিমাদ্রি, জুয়েল, ফারুক, ও দেবকান্ত। এদের উচ্চতা একেক রকম, রীতিমতো বাটকু শফিক যেমন আছে, সেরকম ঢ্যাঙা গোছের ফারুকও আছে। এদের উচ্চতাগুলো, ইঞ্চিতে, ধরা যাক, (৬৩, ৫৫, ৬৫, ৫২, ৭১, ৫৬)।

তাহলে প্রথম ধাপে আমরা পেলাম সবচেয়ে বেঁটে হলো শফিক, অর্থাত ছোট সংখ্যা, ৫২। শফিককে সাত্তার স্যার বললেন মাঠের মধ্যে লাইনের শুরুতে দাঁড়াতে। (ভেঙচি কাটা দেখে ফেলাতে বাড়তি শাস্তি হিসাবে কান ধরে দাড় করিয়ে রাখলেন)। যাহোক, অংকের হিসেবে ব্যাপারটা দাঁড়ালো এরকম, আমাদের হাতের তালিকার শুরুতে রাখলাম [৫২]। বাকি সংখ্যার তালিকাটা হলো (৬৩, ৫৫, ৬৫, ৭১, ৫৬), আর তার মধ্যে সবচেয়ে ছোট হলো ৫৫। সেটাকে হাতের তালিকার পেছনে রাখলে হয়, [৫২, ৫৫]।

বাকি সংখ্যার তালিকা (৬৩, ৬৫, ৭১, ৫৬), সেখানকার ক্ষুদ্রতম সংখ্যা ৫৬। তাকে বাছাই তালিকার পেছনে দিলে সেটা হয় [৫২, ৫৫, ৫৬]।

বাকি সংখ্যার তালিকা (৬৩, ৬৫, ৭১), সেখানকার ক্ষুদ্রতম সংখ্যা ৬৩। তাকে বাছাই তালিকার পেছনে দিলে সেটা হয় [৫২, ৫৫, ৫৬, ৬৩]।

বাকি সংখ্যার তালিকা (৬৫, ৭১), সেখানকার ক্ষুদ্রতম সংখ্যা ৬৫। তাকে বাছাই তালিকার পেছনে দিলে সেটা হয় [৫২, ৫৫, ৫৬, ৬৩, ৬৫]।

আর বাকি রইলো ৭১, (ক্লাসের সবচেয়ে ঢ্যাঙা ছোকরা গুঁফো ফারুক, তার উচ্চতা এখনই কলেজে পড়া ছেলেদের মতো!!)। ৭১ সেটা তালিকার সবচেয়ে বড় সংখ্যা, তাকে বাছাই তালিকার পেছনে জুড়ে দিলে পাই [৫২, ৫৫, ৫৬, ৬৩, ৬৫, ৭১]। ব্যস, বড় থেকে ছোটতে সাজানো হয়ে গেলো তালিকাটা।

আরেকটা উদাহরণ দেখা যাক নিচের ছবিতে (উৎসঃ উইকিপিডিয়া) -



এভাবে না হয় ৬ জন ছাত্রকে কম থেকে বেশি উচ্চতায় সাজানো গেলো, কিন্তু সময় কেমন লাগলো? এখানে দেখা যাচ্ছে, ছয় জনের জন্য ছয় ধাপ লেগেছে। আবার প্রতি ধাপে বাকি সংখ্যার তালিকার সবচেয়ে ছোটটি বের করতে হয়েছে। কাজেই মোট ছাত্রের সংখ্যা ক হলে এই পদ্ধতিতে সময় লাগছে গড়পড়তায় ক ধাপ x প্রতি ধাপে গড়ে ক’টি তুলনা, মানে গড়পড়তার গোজামিলে কxক।

এর চেয়ে দ্রুতও নিশ্চয় কাজটা করা সম্ভব? ৫০টা বাঁদর ছেলেকে এক এক করে এমন করে সাজাতে গেলে সারা দিন লাগবে, তাই সাত্তার স্যার এবার ক্লাসের ফার্স্ট বয় পার্থ, তাকে ডেকে কাজটা ধরিয়ে দিলেন। উনার আবার দুপুরের ভাতঘুমটা পেয়ে বসেছে।

বাবল সর্ট বা বুদ্বুদ বাছাই

পানি বা সাবান পানির মধ্যে স্ট্র ডুবিয়ে বুদবুদ বানিয়েছেন ছেলেবেলায়? কিংবা এখনো? যদি করে থাকেন তাহলে হয়তো দেখেছেন, বড় বুদবুদ অনেক দ্রুত ভেসে উঠে?

পার্থর মাথায় এলো এই বুদ্ধিটা, এক এক করে কে সবচেয়ে ছোট তা বের না করে অন্য পদ্ধতি খাটাবে। লম্বু কাউকে পেলেই লাইনের পেছনের দিকে ঠেলে দেবে।

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

আবারও উদাহরণ হিসাবে (৬৩, ৫৫, ৬৫, ৫২, ৭১, ৫৬) তালিকাটা দেখা যাক।

প্রথম দুইজনের উচ্চতা ৬৩ ও ৫৫, কাজেই লম্বু ৬৩কে দ্বিতীয় স্থানে পাঠানোতে তালিকাটা দাঁড়ালো (৫৫, ৬৩, ৬৫, ৫২, ৭১, ৫৬)। এবারে দ্বিতীয় ও তৃতীয় জনের জোড়া (৬৩, ৬৫) এর মধ্যে ৬৫ লম্বু, কাজেই জায়গা বদলের দরকার নাই। তার পরের জোড়া (৬৫, ৫২) কে জায়গা বদল করে পাই (৫৫, ৬৩, ৫২, ৬৫, ৭১, ৫৬)। তার পরের জোড়া (৬৫, ৭১) ঠিক আছে। সর্বশেষ জোড়া (৭১, ৫৬) কে জায়গা বদল করানোতে পাওয়া গেলো (৫৫, ৬৩, ৫২, ৬৫, ৫৬, ৭১)।

এবার দ্বিতীয় পর্যায়ে একই কাজ শুরু থেকে করতে হবে, কিন্তু সবশেষের জায়গার লম্বু ফারুককে বাদ দিয়ে,

(৫৫, ৬৩, ৫২, ৬৫, ৫৬, ৭১) -> (৫৫, ৬৩, ৫২, ৬৫, ৫৬, ৭১) (১ম দুইজন ঠিক আছে)

(৫৫, ৬৩, ৫২, ৬৫, ৫৬, ৭১) -> (৫৫, ৫২, ৬৩, ৬৫, ৫৬, ৭১) (জায়গাবদল)

(৫৫, ৫২, ৬৩, ৬৫, ৫৬, ৭১) -> (৫৫, ৫২, ৬৩, ৬৫, ৫৬, ৭১) (ঠিক আছে)

(৫৫, ৫২, ৬৩, ৬৫, ৫৬, ৭১) -> (৫৫, ৫২, ৬৩, ৫৬, ৬৫, ৭১) (জায়গাবদল)

এবার ৩য় পর্যায়ে একই কাজ শুরু, কিন্তু সবশেষের লম্বু ফারুক, আর তার আগের হিমাদ্রীকে বাদ দিয়ে।

(৫৫, ৫২, ৬৩, ৫৬, ৬৫, ৭১) -> (৫২, ৫৫, ৬৩, ৫৬, ৬৫, ৭১) (জায়গাবদল)

(৫২, ৫৫, ৬৩, ৫৬, ৬৫, ৭১) -> (৫২, ৫৫, ৬৩, ৫৬, ৬৫, ৭১) (ঠিক আছে)

(৫২, ৫৫, ৬৩, ৫৬, ৬৫, ৭১) -> (৫২, ৫৫, ৫৬, ৬৩, ৬৫, ৭১) (জায়গাবদল)

এবার ৪র্থ পর্যায়েও একই কাজ শুরু, কিন্তু শেষের তিনজনকে বাদ দিয়ে। এভাবে করতে থাকলে আর দুই ধাপ পরেই আমরা পাবো সাজানো তালিকাটি, (৫২, ৫৫, ৫৬, ৬৩, ৬৫, ৭১)।



(বাবল সর্টের অ্যানিমেশন - উইকিপিডিয়া)

পার্থ অবশ্য এতো দূর যেতে পারেনি। স্যার একটু তন্দ্রাতে যেতেই ফারুক পার্থকে মনের সুখে কিছুক্ষণ গাট্টা দিলো। আঁতেল পোলার মাতব্বরী এই রোদে আর কাঁহাতক ভালো লাগে।

শোরগোল শুনে সাত্তার স্যারের ঘুমটা গেলো ভেঙে। এখনো কাজ হয়নি দেখে মেজাজ সপ্তমে চড়লো, তাই এক রাউন্ড শাস্তি শেষে দায়িত্বটা এবার দেঁড়েল কুদ্দুসকেই দিলেন।

মার্জ সর্ট বা জোড়া বাছাই

কুদ্দুস পড়ায় লবডঙ্কা হলেও কাজের বুদ্ধি প্রখর। বাবা দানু মিঞা সওদাগরের খাতুনগঞ্জের আড়তে বসতে হয়না এখনো, কিন্তু সেখানকার হালচাল ছোটবেলা থেকে দেখে আসাতে এই ধরণের কাজগুলো সহজে করে ফেলতে পারে। কেবল পরীক্ষার খাতাতেই কিছু লিখতে ইচ্ছে করে না। এই নিয়ে ২ বার ফেল করে ক্লাস এইটেই আটকে আছে।

যাহোক, কুদ্দুসের মাথায় এলো, এতো ঝামেলা না করে কাজটাকে ছোট ছোট অংশে ভাগ করে ফেলা যাক। যেমন, আগের উদাহরণের তালিকাটা দেখা যাক। (৬৩, ৫৫, ৬৫, ৫২, ৭১, ৫৬) এই তালিকাটা এক বারে সাজানো কঠিন। তাই কুদ্দুস প্রথমেই এই তালিকাকে দুই ভাগে ভাগ করে ফেললো (৬৩, ৫৫, ৬৫) আর (৫২, ৭১, ৫৬)।

বুদ্ধিটা হলো, এই দুইটা তালিকাকে প্রথমে সাজিয়ে ফেলবে, তার পর এদের দুই তালিকাকে একসাথে জোড়া লাগাবে।
(৬৩, ৫৫, ৬৫) তালিকাটাকে কীভাবে সাজাবে? একই রকম, দুই ভাগে ভাগ করে ফেলা হলো। মাঝের জনকে তো আর কাটা যায় না, তাই তালিকাটা না হয়, (৬৩, ৫৫) আর (৬৫) এভাবে ভাগ হলো।

এবার তো প্রথম তালিকাটা, মানে (৬৩, ৫৫) কে সাজানো সোজা, এদের জায়গা বদল করেই পাওয়া গেলো (৫৫, ৬৩)। তার সাথে (৬৫) এই তালিকাটাকে জোড়া লাগাবো কীভাবে? দুই পাশে দুই তালিকার ছাত্রদের দাঁড় করালো কুদ্দুস। তার পর দুই তালিকার সামনের মাথায় যারা আছে, তাদের তুলনা করলো, যে ছোট, তাকে নেয়া হলো। তাই প্রথমে ৫৫ আর ৬৫ এর তুলনা করে নেয়া হলো ৫৫কে। তার পরে ৬৩ আর ৬৫ এর তুলনা করে ৬৩কে, আর এর পর যেহেতু প্রথম তালিকা শেষ, তাই দ্বিতীয় তালিকার সবাইকে পরপর নিয়ে পাওয়া গেলো (৫৫, ৬৩, ৬৫)।

ব্যাস, শুরুর তালিকাটা গুছানো হয়ে গেলো, পরের ৩ জনের তালিকাটাও একইভাবে গুছিয়ে পাওয়া গেলো (৫২, ৫৬, ৭১)।

এবার কুদ্দুসের হাতে দুটো দল, (৫৫, ৬৩, ৬৫), আর (৫২, ৫৬, ৭১)। এদেরকে জোড়া লাগানোর কাজ শুরু করলো কুদ্দুস।

(৫৫, ৬৩, ৬৫), (৫২, ৫৬, ৭১), [ ] -> (৫৫, ৬৩, ৬৫), (৫৬, ৭১), [৫২] (৫৫ আর ৫২ এর মধ্যে ৫২ ছোট)

(৫৫, ৬৩, ৬৫), (৫৬, ৭১), [৫২] -> (৬৩, ৬৫), (৫৬, ৭১), [৫২, ৫৫] (৫৫ আর ৫৬ এর মধ্যে ৫৫ ছোট)

(৬৩, ৬৫), (৫৬, ৭১), [৫২, ৫৫]->(৬৩, ৬৫), (৭১), [৫২, ৫৫, ৫৬]

(৬৩, ৬৫), (৭১), [৫২, ৫৫, ৫৬] -> (৬৫), (৭১), [৫২, ৫৫, ৫৬,৬৩]

(৬৫), (৭১), [৫২, ৫৫, ৫৬,৬৩]-> ( ), (৭১), [৫২, ৫৫, ৫৬, ৬৩, ৬৫]

( ), (৭১), [৫২, ৫৫, ৫৬,৬৩]-> ( ), ( ), [৫২, ৫৫, ৫৬, ৬৩, ৬৫, ৭১]

ব্যাস, গুছানো শেষ। আর এতে ঝামেলাও কম হলো। ঠিক কতোটা কম, কুদ্দুস নিজেও টের পায়নি, কিন্তু আমরা অংক করে দেখতে পারি, ক জন ছাত্র থাকলে তাদের সাজাতে সময় লাগবে ক x log(ক) সময়, যা আগের দুটো পদ্ধতির চাইতেই অনেক কম।
মার্জ সর্টের বিভিন্ন ধাপের আরেকটি উদাহরণ দেখা যাক নিচের ছবিতে (সূত্রঃ উইকি),



পাদটীকা-

সর্ট বা বাছাইয়ের হাজারো পদ্ধতি আছে, একেক ক্ষেত্রে একেকটি প্রযোজ্য। কম্পিউটার ব্যবহারের প্রতিটি ক্ষণেই যন্ত্রগণক ভেতরে ভেতরে এই সর্টিং করে চলেছে, তাই দ্রুতগতির সর্টিং বা বাছাই পদ্ধতি কম্পিউটার বিজ্ঞানের অত্যন্ত গুরুত্বপূর্ণ বিষয়। সর্টিং সম্পর্কে বিস্তারিত জানতে হলে দেখতে পারেন উইকিপিডিয়াতে।
সর্বশেষ এডিট : ১৯ শে নভেম্বর, ২০০৯ রাত ১:৩৫
৩১টি মন্তব্য ৭টি উত্তর

আপনার মন্তব্য লিখুন

ছবি সংযুক্ত করতে এখানে ড্রাগ করে আনুন অথবা কম্পিউটারের নির্ধারিত স্থান থেকে সংযুক্ত করুন (সর্বোচ্চ ইমেজ সাইজঃ ১০ মেগাবাইট)
Shore O Shore A Hrosho I Dirgho I Hrosho U Dirgho U Ri E OI O OU Ka Kha Ga Gha Uma Cha Chha Ja Jha Yon To TTho Do Dho MurdhonNo TTo Tho DDo DDho No Po Fo Bo Vo Mo Ontoshto Zo Ro Lo Talobyo Sho Murdhonyo So Dontyo So Ho Zukto Kho Doye Bindu Ro Dhoye Bindu Ro Ontosthyo Yo Khondo Tto Uniswor Bisworgo Chondro Bindu A Kar E Kar O Kar Hrosho I Kar Dirgho I Kar Hrosho U Kar Dirgho U Kar Ou Kar Oi Kar Joiner Ro Fola Zo Fola Ref Ri Kar Hoshonto Doi Bo Dari SpaceBar
এই পোস্টটি শেয়ার করতে চাইলে :
আলোচিত ব্লগ

নারী একা কেন হবে চরিত্রহীন।পুরুষ তুমি কেন নিবি না এই বোজার ঋন।

লিখেছেন সেলিনা জাহান প্রিয়া, ০৪ ঠা মে, ২০২৪ রাত ১২:৫৪



আমাদের সমাজে সারাজীবন ধরে মেয়েদেরকেই কেনও ভালো মেয়ে হিসাবে প্রমান করতে হবে! মেয়ে বোলে কি ? নাকি মেয়েরা এই সমাজে অন্য কোন গ্রহ থেকে ভাড়া এসেছে । সব... ...বাকিটুকু পড়ুন

মুসলিম কি সাহাবায়ে কেরামের (রা.) অনুরূপ মতভেদে লিপ্ত হয়ে পরস্পর যুদ্ধ করবে?

লিখেছেন মহাজাগতিক চিন্তা, ০৪ ঠা মে, ২০২৪ সকাল ৯:৪৯




সূরাঃ ৩ আলে-ইমরান, ১০৫ নং আয়াতের অনুবাদ-
১০৫। তোমরা তাদের মত হবে না যারা তাদের নিকট সুস্পষ্ট প্রমাণ আসার পর বিচ্ছিন্ন হয়েছে ও নিজেদের মাঝে মতভেদ সৃষ্টি করেছে।... ...বাকিটুকু পড়ুন

মসজিদে মসজিদে মোল্লা,ও কমিটি নতুন আইনে চালাচ্ছে সমাজ.

লিখেছেন এম ডি মুসা, ০৪ ঠা মে, ২০২৪ সকাল ১০:২৩

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

=সকল বিষাদ পিছনে রেখে হাঁটো পথ=

লিখেছেন কাজী ফাতেমা ছবি, ০৪ ঠা মে, ২০২৪ সকাল ১১:৩৮



©কাজী ফাতেমা ছবি

বিতৃষ্ণায় যদি মন ছেয়ে যায় তোমার কখনো
অথবা রোদ্দুর পুড়া সময়ের আক্রমণে তুমি নাজেহাল
বিষাদ মনে পুষো কখনো অথবা,
বাস্তবতার পেরেশানী মাথায় নিয়ে কখনো পথ চলো,
কিংবা বিরহ ব্যথায় কাতর তুমি, চুপসে... ...বাকিটুকু পড়ুন

ব্লগে বিরোধী মতের কাউকে নীতি মালায় নিলে কি সত্যি আনন্দ পাওয়া যায়।

লিখেছেন লেখার খাতা, ০৪ ঠা মে, ২০২৪ সন্ধ্যা ৬:১৮

ব্লগ এমন এক স্থান, যেখানে মতের অমিলের কারণে, চকলেটের কারণে, ভিন্ন রাজনৈতিক মতাদর্শের কারণে অনেক তর্কাতর্কি বিতর্ক কাটা কাটি মারামারি মন্তব্যে প্রতিমন্তব্যে আঘাত এগুলো যেনো নিত্য নৈমিত্তিক বিষয়। ব্লগটি... ...বাকিটুকু পড়ুন

×