• অ্যালগরিদম

    অ্যালগরিদম


    এ এবং বি নামক স্থানে দুটি সংখ্যা a এবং b এর সর্বাধিক সাধারণ বিভাজক (জিসিডি) গণনা করার জন্য একটি অ্যালগরিদমের (ইউক্লিডের অ্যালগরিদম) ফ্লোচার্ট দুটি লুপগুলিতে ধারাবাহিক বিয়োগ দ্বারা অগ্রসর হয়: যদি পরীক্ষার বি ≥ এ 'হ্যাঁ' দেয় (বা সত্য) (অবস্থানের বিতে আরও সঠিকভাবে বি বি এর সংখ্যার চেয়ে বড় বা সমান) তবুও, অ্যালগোরিদম বি ← বি - এ (সংখ্যার বি অর্থ - একটি পুরানো খ প্রতিস্থাপন করে) নির্দিষ্ট করে। একইভাবে, আইএফ এ বি, তিএন এ ← এ - বি প্রক্রিয়াটি সমাপ্ত হয় যখন (এর বিষয়বস্তু) বি 0 হয়, জি.সি.ডি. প্রদান করে ing এ। (স্কট ২০০৯: ১৩; টাউসওয়ার্থে 1977 থেকে প্রতীক এবং অঙ্কন শৈলী থেকে প্রাপ্ত আলগোরিদম)।

    অ্যালগোরিদমঃ কোনো একটি নির্দিষ্ট সমস্যা সমাধানের জন্য যুক্তিসম্মত সসীম সংখ্যক পর্যায়ক্রমিক ধারা বর্ননাকে একত্রে  অ্যালগোরিদম বলা হয়। কোনো সমস্যাকে কম্পিউটার প্রোগ্রামিং দ্বারা সমাধান করার পূর্বে কাগজে-কলমে সমাধান করার জন্যই অ্যালগোরিদম ব্যবহার করা হয়। আরব গনিতবিদ আল খারিজমী এর নাম অনুসারে অ্যালগোরিদম নামকরন করা হয়েছে।

    অ্যালগোরিদম তৈরির শর্তঃ 
    • ১। ইনপুট এবং আউটপুট স্পষ্টভাবে নির্ধারন করতে হবে।
    • ২। অ্যালগোরিদমের প্রত্যেকটি ধাপ স্পষ্ট হতে হবে যাতে সহজে বোঝা যায়।
    • ৩। সসীম সংখ্যক ধাপে সমস্যার সমাধান হতে হবে।
    • ৪। অ্যালগোরিদম ব্যাপকভাবে প্রয়োগ উপযোগী হতে হবে।
    • ৫। অ্যালগোরিদমে কোন কম্পিউটার কোড থাকা যাবে না। বরং অ্যালগোরিদম এমনভাবে লিখতে হবে যা একই ধরণের প্রোগ্রামিং ভাষার জন্য ব্যবহার করা যাবে।
    অ্যালগোরিদম তৈরির সুবিধাঃ 
    • ১। এটি একটি ধাপ-ভিত্তিক উপস্থাপনা ফলে সহজে প্রোগ্রামের উদ্দেশ্য বোঝা যায়।
    • ২। একটি অ্যালগরিদম একটি নির্দিষ্ট পদ্ধতি ব্যবহার করে।
    • ৩। এটি কোনও প্রোগ্রামিং ভাষার উপর নির্ভরশীল নয়, তাই প্রোগ্রামিং জ্ঞান ছাড়াই যেকারো পক্ষে এটি বোঝা সহজ।
    • ৪। একটি অ্যালগরিদমের প্রতিটি ধাপের নিজস্ব লজিকাল ক্রম আছে তাই এটি ডিবাগ করা সহজ।
    • ৫। প্রোগ্রাম পরিবর্তন ও পরিবর্ধনে সহায়তা করে।
    দুটি সংখ্যার গড় নির্ণয়ের অ্যালগোরিদম-
    • ধাপ-১: শুরু করি।
    • ধাপ-২: ইনপুট হিসেবে a ও b চলকের মান গ্রহণ করি।
    • ধাপ-৩: avg = (a+b)/2 নির্নয় করি।
    • ধাপ-৪: ফলাফল হিসেবে avg চলকের মান প্রদর্শন করি।
    • ধাপ-৫: শেষ করি।

    ফ্লোচার্ট বা প্রবাহ চিত্রঃ যে চিত্রভিত্তিক পদ্ধতিতে বিশেষ কতকগুলো চিহ্নের সাহায্যে কোনো একটি নির্দিষ্ট সমস্যার সমাধান করা হয় তাকে ফ্লোচার্ট বলা হয়। অন্যভাবে বলা যায়, অ্যালগোরিদমের চিত্ররূপই হল ফ্লোচার্ট। ফ্লোচার্টের সাহায্যে প্রোগ্রাম বোঝা সহজ হয় বলে এটি প্রোগ্রামার ও ব্যবহারকারীর মাঝে সংযোগ রক্ষার জন্য ব্যবহৃত হয়।
    ফ্লোচার্ট তৈরি করার নিয়মাবলীঃ 
    • ১। প্রতিটি ফ্লোচার্টের অবশ্যই একটি শুরু এবং শেষ থাকবে।
    • ২। নিয়ন্ত্রণ প্রবাহ অবশ্যই টপ থেকে শুরু হবে।
    • ৩। নিয়ন্ত্রণ প্রবাহ অবশ্যই বোটম থেকে শেষ হবে।
    • ৪। প্রচলিত চিহ্ন বা প্রতীক ব্যবহার করে ফ্লোচার্ট তৈরি করতে হবে।
    • ৫। তীর চিহ্ন দিয়ে নিয়ন্ত্রণ প্রবাহ দেখাতে হবে।
    • ৬। ফ্লোচার্টে কোন প্রোগ্রামিং ভাষা ব্যবহার করা যাবে না।
    • ৭। চিহ্ন বা প্রতীক গুলো ছোট বড় হলে ক্ষতি নাই তবে আকৃতি ঠিক থাকতে হবে।
    ফ্লোচার্টের সুবিধাঃ
    • ১। একটি প্রোগ্রামের যুক্তির মধ্যে যোগাযোগের চমৎকার উপায় হলো ফ্লোচার্ট ।
    • ২। ফ্লোচার্ট ব্যবহার করে সমস্যা বিশ্লেষণ করা সহজ। 
    • ৩। প্রোগ্রাম উন্নয়নের সময়, ফ্লোচার্ট একটি ব্লুপ্রিন্টের ভূমিকা পালন করে, যা প্রোগ্রামের উন্নয়ন প্রক্রিয়াকে আরও
      সহজ করে তোলে।
    • ৪। ফ্লোচার্ট এর সাহায্যে প্রোগ্রাম বা সিস্টেম রক্ষণাবেক্ষণ সহজ হয়। 
    • ৫। ফ্লোচার্টকে যেকোন প্রোগ্রামিং ভাষার কোডে রূপান্তর করা সহজ।

    ফ্লোচার্টের প্রকারভেদঃ ফ্লোচার্টকে প্রধানত দুইভাগে ভাগ করা যায়। যথা-
    • ১। সিস্টেম ফ্লোচার্ট – সিস্টেম ফ্লোচার্টে ডেটা গ্রহণ, প্রক্রিয়াকরণ, সংরক্ষণ এবং ফলাফল প্রদর্শনের প্রবাহ দেখানো হয়। কোন সিস্টেমের কার্যপ্রনালী বোঝাতে সিস্টেম ফ্লোচার্ট ব্যবহৃত হয়।
    • ২। প্রোগ্রাম ফ্লোচার্ট – প্রোগ্রাম ফ্লোচার্টে প্রোগ্রামের বিভিন্ন ধাপের বিস্তারিত বিবরণ দেওয়া হয়। এছাড়া প্রোগ্রামের ভূল নির্ণয় ও সংশোধনে প্রোগ্রাম ফ্লোচার্ট ব্যবহৃত হয়।
    ফ্লোচার্ট গঠনের মৌলিক ধরণ বা স্ট্রাকচারঃ 
    • ১। সরল অনুক্রম (Simple Sequence) – এই স্ট্রাকচারে প্রোগ্রামের নির্দেশগুলো সরল অনুক্রমে ধারাবাহিকভাবে নির্বাহ হয়ে থাকে।
    • ২। নির্বাচন বা সিলেকশন (Selection)- কোন একটি শর্তের সত্য বা মিথ্যার উপর ভিত্তি করে সিদ্ধান্ত নিয়ে কার্য নির্বাহের ক্ষেত্রে এই স্ট্রাকচার ব্যবহৃত হয়।
    • ৩। পুনরাবৃত্তি বা লুপ (Loop)- একই ধরণের কাজ পুনরাবৃত্তি করার জন্য এই স্ট্রাকচার ব্যবহৃত হয়।
    • ৪। জাম্প (Jump)- এই স্ট্রাকচারে প্রোগ্রামের প্রবাহ সরল অনুক্রমের পরিবর্তে কোন শর্তের সত্য বা মিথ্যার উপর ভিত্তি করে উপরের বা নিচের নির্দিস্ট কোন নির্দেশ নির্বাহ হতে থাকে।
    ফ্লোচার্টে ব্যবহৃত প্রতিক সমূহ এবং এদের ব্যবহারঃ  
    প্রতিকপ্রতিকের নাম ব্যবহার
     ডিম্বক (Oval)এটি ফ্লোচার্টের  শুরু এবং শেষ নির্দেশ করে ।
    সামন্তরিকইনপুট নেওয়া ও আউটপুট প্রদর্শন নির্দেশ করে।
    আয়তাকারএই প্রতীক কোন প্রক্রিয়াকরণ নির্দেশ করে।
    হীরকযখন  শর্তের সাপেক্ষে কোন প্রক্রিয়া সম্পন্ন করতে হয় তখন ব্যবহৃত হয়। এই প্রতীকের মধ্যে শর্ত লেখা হয়।
    বৃত্তএকাদিক শাখা যখন একটি বিন্দুতে মিলিত হয় তখন এই প্রতীক ব্যবহৃত হয়।
    তীর চিহ্ন প্রবাহের দিক নির্দেশে ব্যবহৃত হয়।

    দুটি সংখ্যার গড় নির্ণয়ের ফ্লোচার্ট-
    সূডোকোড (Pseudo Code): একটি প্রোগ্রামের কার্যপ্রণালী বর্ননা বা উপস্থাপনার জন্য ইংরেজি ভাষায় লেখা কতগুলো নির্দেশনার সমষ্টিকে একত্রে সূডোকোড বলে। সূডোকোডকে  অ্যালগোরিদমের পূর্ব-পস্তুতি বা অনেক সময়  অ্যালগোরিদমের বিকল্প হিসেবে বিবেচনা করা হয়। সূডো(Pseudo) একটি গ্রীক শব্দ যার অর্থ হচ্ছে ছদ্ম।
    দুটি সংখ্যার গড় নির্ণয়ের সূডোকোড-
    • Start
    • Input a and b
    • avg = (a+b)/2
    • Print avg
    • Stop

    অ্যালগরিদম নিয়ে কিছু কথা


    সন্তু আর জোজো দুই বন্ধু। একদিন তারা গাছের উপর বসে আছে। ঝিরিঝিরি বাতাস, গাছের ডালে শান্তিপূর্ণ পরিবেশ। সন্তুর হাতে দুটো আপেল। জোজোর হাতে একটা চাকু।
    হঠাৎ কি মনে করে সন্তু বলল, “দে দেখি তোর চাকুটা, আপেল কাঁটি।“জোজা চাকুটা এগিয়ে দিল, “দশটা টুকরা কর দেখি।““দশটা টুকরো কেন?”“বাবা যে গতমাসে স্পেনে গিয়েছিল, সেখানে ফুটবলার রোনালদো এসেছিল হাত দেখাতে। রোনালদোই বলেছে আপেল দশ টুকরো করে খাওয়া স্বাস্থ্যকর।
    “আপাতত আপনাদের কাছে আমার প্রশ্ন, “সন্তু কেমন করে আপেলটাকে দশটা টুকরো করবে ?” আমি জানি আপনাদের মাঝে কেউ কেউ বলবেন, “এইটা কেমন ফালতু প্রশ্ন ? সন্তু কি তোমার মত বেকুব নাকি যে আপেল দশটা টুকরা করতে পারবে না?”
    কিন্তু বিশ্বাস করুন, একটা আপেল দশ টুকরো করা মোটেও সহজ কাজ নয়।
    প্রথম পদ্ধতি ১. সন্তু আপেলে একটা পোঁচ দেবে চাকু দিয়ে।
    ২. গুণে দেখবে দশ টুকরো হলো কি না।
    ৩. যদি হয়ে থাকে, তাহলে কাজ শেষ।
    ৪. যদি না হয়, প্রথম ধাপে ফিরে যাবে।
    দ্বিতীয় পদ্ধতি
    ১.সন্তু বের করবে দশ একটা জোড় সংখ্যা।
    ২. আপেলে ১০ কে দুই দিয়ে ভাগ করলে পাঁচ হয় এবং চাকু দিয়ে পাঁচটি পোঁচ দেবে। অতএব আপেলকে দশ টুকরো করার মাঝেও অনেক উপায় আছে। তবু আমাদের সন্তু যথেষ্ট বুদ্ধিমান ব্যক্তি হলে নিশ্চয়ই দ্বিতীয় পদ্ধতি ছেড়ে প্রথম পদ্ধতি নিতে যাবে না। কিন্তু এ ব্যাপারে কোন আপত্তি থাকার কথা নয়, দুই উপায়েই আপেলকে সফল ভাবে দশ টুকরো করা সম্ভব।
    কোন কাজ করার এই যে ধারাবাহিক নির্দেশনা, তার খটমটে নামও আছে একটা, অ্যালগরিদম(Algorithm)। আমাদের চারপাশে অসংখ্যা অ্যালগরিদম আছে। আপনি চাবি দিয়ে তালা খুলতে চান কি গণিত করতে চান, অ্যালগরিদম ঠিক ঢুকে যাবে। যা হোক, আপেল কাঁটার অ্যালগরিদম ব্যবহার করে সন্তু আপেল দশ টুকরো করুক,
    আমরা এই ফাঁকে গণিত নিয়ে কিছু কথা বলে ফেলি। গাণিতিক অ্যালগরিদমের সাথে সকলেই আমরা কমবেশি পরিচিত। ছোটক্লাসে থাকতে সবাই নিশ্চয় ভাগ করে করে গ.সা.গু. বের করেছি, ওটাই গাণিতিক অ্যালগরিদমের একখানা উদাহরন। সত্যি বলতে কি, অত্যন্ত চমৎকার উদাহরন, কারণ ঐ অ্যালগরিদমটি বেশ নামকরা। নামটা হচ্ছে ইউক্লিডের অ্যালগরিদম। দুটি সংখ্যার গ.সা.গু. ইউক্লিডের অ্যালগরিদম এভাবে বের করতে পারে-
    ইউক্লিডের অ্যালগরিদম
    ১. ছোট সংখ্যাটি দিয়ে বড়টিকে ভাগ করতে হবে।
    ২. ভাগশেষ শূন্য হলে যা দিয়ে ভাগ করা হয়েছে তাই গ.সা.গু।
    ৩. ভাগশেষ শূন্য না হলে প্রথমে যে সংখ্যাটি দিয়ে আমরা ভাগ করেছি, তাকে ভাগশেষ দিয়ে ভাগ করতে হবে।
    ৪. ২য় ধাপে ফিরে যেতে হবে।
    ইউক্লিডের অ্যালগরিদম কেমন করে কাজ করে, তা নাহয় নাই বললাম। কিন্তু কাজ যে করে সে ব্যাপারে সবাই আমরা নিশ্চিত, কারন এককালে অনেকবার অ্যালগরিদমটা আমরা ব্যবহার করেছি।
    গণিতে অ্যালগরিদম আমরা আরও অনেক ব্যবহার করি, সবগুলো বলতে গেলে ছোটখাট বিশ্বকোষ হয়ে যাবে। শুধু গণিত নয়, বিজ্ঞানেও অ্যালগরিদমের জয়জয়কার।
    যেমন ধরা যাক, ল্যাবরেটরিতে একটা নাম না জানা লবন কি কি মূলক দ্বারা গঠিত তা বের করার যে পরীক্ষাটি আছে, সেটি চমৎকার একটি অ্যালগরিদম। প্রথমে লবনের সাথে একটি যৌগের বিক্রিয়া করতে হয়। তাহলে বিক্রিয়া কেমন হলো তা দেখে লবনের প্রকৃতি সম্পর্কে কিছুটা ধারনা পাওয়া যায়। সেই ধারনাকে কাজে লাগিয়ে আরেকটি বিক্রিয়া করানো হয়, আবার কিছুটা ধারনা পাওয়া যায়। এভাবে ধাপে ধাপে নতুন নতুন তথ্য বের করতে করতে আমরা লবনের নামটি পেয়ে যাই।
    তবে অ্যালগরিদমের সবচেয়ে শক্তিশালী ক্ষেত্র হচ্ছে কম্পিউটার। কম্পিউটার প্রোগ্রাম বানাতে গেলে অ্যালগরিদম আসবেই আসবে। সত্যি বলতে কি, কম্পিউটার এই অ্যালগরিদমের সাহায্যেই সব কাজ করে।কম্পিউটারের যান্ত্রিক মস্তিষ্ক সুনিপুণ ভাবে কিছু করতে পারে যখন ওকে নিখুঁত ভাবে বলে দেওয়া হয় কেমন করে কাজটি করতে হবে। মানে, অ্যালগরিদমটি যখন কম্পিউটারের জানা থাকে, তখনই সে একটি কাজ করতে পারে।
    এত ঝামেলার মাঝে না গিয়ে আমরা একটা উদাহরন দিয়ে ফেলি। ধরা যাক কম্পিউটারে একটা প্রোগ্রাম লিখা হল কোন সংখ্যা মৌলিক না যৌগিক জানার জন্য। অ্যালগরিদমটি কাজ করে এভাবে।
    মৌলিক সংখ্যা বের করার অ্যালগরিদম
    ১. একটি সংখ্যা নিয়ে শুরু করতে হবে(একেবারে প্রথমে সংখ্যাটি নেওয়া হবে ২, পরে অ্যালগরিদম আস্তে আস্তে সংখ্যাটি বদলাতে শুরু করবে)।
    ২. ইনপুটে দেওয়া সংখ্যাটি(মানে যেটি মৌলিক না যৌগিক বের করতে হবে) কম্পিউটারের বাছাই করা সংখ্যাটির সমান না ছোট দেখতে হবে।
    ৩. সমান হলে ইনপুটের সংখ্যাটি মৌলিক(১ হলে অবশ্য অন্য কথা, সেই অংশ বাদ দিই আপাতত)।
    ৪. ছোট হলে বাছাই করা সংখ্যাটি দিয়ে ইনপুটের সংখ্যাটিকে ভাগ করলে ভাগশেষ কত হয় তা বের করতে হবে।
    ৫. ভাগশেষ শূন্য হলে ইনপুটের সংখ্যাটি যৌগিক।
    ৬. ভাগশেষ শূন্য হলে বাছাই করা সংখ্যাটির সাথে ১ যোগ করে নতুন আরেকটি সংখ্যা বাছাই করতে হবে।
    ৭. দ্বিতীয় ধাপে ফিরে যেতে হবে। আমাদের দেওয়া এই অ্যালগরিদমটি বারবার ব্যবহার করে কম্পিউটার ইনপুটের সংখ্যাটি মৌলিক না যৌগিক, তা ঠিকই বের করে ফেলতে পারবে! বিশ্বাস না হলে প্রোগ্রাম লিখে দেখতে পারেন।এই অ্যালগরিদমটা খুবই সহজ নিয়ম অনুসরন করে।
     প্রাইম নাম্বার বা মৌলিক সংখ্যা বের করার জন্য আরেকটি অ্যালগরিদম আসুন বানিয়ে ফেলি। এই অ্যালগরিদমটি উইলসনের থিওরেম ব্যবহার করবে। উইলিসনের থিওরেমটি হচ্ছে – যদি কোন সংখ্যা থেকে ছোট সবগুলো সংখ্যার গুণফল এর সাথে ১ যোগ
    করে ঐ সংখ্যাটি দিয়ে ভাগ করলে ভাগশেষ শূন্য হয়, তবে সংখ্যাটি মৌলিক। গণিতের ভাষায়, P মৌলিক হবে যদি ও কেবল যদি(P-1)! ≡ -1(mod p)অ্যালগরিদমটি লিখে ফেলা যাক। আমরা ধরে নিতে পারি যে সংখ্যাটি মৌলিক কি যৌগিক বের করতে হবে সেটি হচ্ছে P। উইলসনের থিওরেম ব্যবহার করে প্রাইম নাম্বার বের করার অ্যালগরিদম
    ১. p এর থেকে ছোট সবগুলো সংখ্যার গুণফল বের করতে হবে(এই কাজটি করার জন্যও একটি অ্যালগরিদম দরকার, সেটা আপাতত নাই দিলাম)।
    ২. গুণফলের সাথে ১ যোগ করতে হবে।৩. ১ যোগ করে p দিয়ে ভাগ করতে ভাগশেষ কত হয় তা বের করতে হবে।
    ৪. ভাগশেষ শূন্য হলে সংখ্যাটি মৌলিক।
    ৫. ভাগশেষ শূন্য না হলে সংখ্যাটি যৌগিক।
    সহজ ভাষায় এই হল অ্যালগরিদম।
    সুত্র:  ইন্টারনেট 






  • 0 comments:

    Post a Comment

    New Research

    Attention Mechanism Based Multi Feature Fusion Forest for Hyperspectral Image Classification.

    CBS-GAN: A Band Selection Based Generative Adversarial Net for Hyperspectral Sample Generation.

    Multi-feature Fusion based Deep Forest for Hyperspectral Image Classification.

    ADDRESS

    388 Lumo Rd, Hongshan, Wuhan, Hubei, China

    EMAIL

    contact-m.zamanb@yahoo.com
    mostofa.zaman@cug.edu.cn

    TELEPHONE

    #
    #

    MOBILE

    +8615527370302,
    +8807171546477