একই উদ্দেশ্যে বিভিন্ন অ্যালগরিদম / ডেটা স্ট্রাকচার শেখার কারণগুলি কী কী?


91

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

আমি প্রচুর অ্যালগরিদম দেখেছি - উদাহরণস্বরূপ, সর্বাধিক প্রবাহ সমস্যার জন্য, আমি প্রায় 3 টি অ্যালগরিদম জানি যা সমস্যার সমাধান করতে পারে: ফোর্ড-ফুলকারসন, এডমন্ডস-কার্প এবং ডাইনিক, ডাইনিকের সাথে সবচেয়ে জটিলতা রয়েছে।

ডেটা স্ট্রাকচারের জন্য - উদাহরণস্বরূপ, হিপস - সেখানে বাইনারি হ্যাপস, বাইনোমিয়াল হ্যাপস এবং ফিবোনাচি হিপস রয়েছে, ফিবোনাচি হিপগুলির সাথে সামগ্রিক জটিলতা রয়েছে।

যা আমাকে বিভ্রান্ত করে রাখে তা হ'ল: আমাদের সমস্ত কিছু জানার কি কোনও কারণ আছে? কেন না শুধুমাত্র শিখুন এবং সেরা জটিলতার সাথে পরিচিত হন?

আমি জানি যে আমরা তাদের সকলকে জানলে এটি সবচেয়ে ভাল, আমি কেবল আরও জানতে চাই যে আরও কিছু "আরও বৈধ" কারণ রয়েছে, যেমন কিছু সমস্যা / অ্যালগোরিদম কেবল এ- কে নয়, বি ব্যবহার করে ইত্যাদি সমাধান করা যায় etc.


17
যেমন আমি সবসময় বলে থাকি: এগুলি (সাধারণত) কোনও "সেরা" নয়। একবার আপনি "আরও ভাল" বলতে কী বোঝাতে চান তা স্পষ্টভাবে ব্যাখ্যা করলে উত্তরটি সুস্পষ্ট হয়ে যায়।
রাফেল

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

@ সাম আমার অভিজ্ঞতা থেকে, আমি যা ভেবেছিলাম তা হ'ল বক্তৃতাগুলিতে বা কিছু পাঠ্যপুস্তকগুলি তথ্যবহুল, অনেক অ্যালগরিদম, বিশ্লেষণ ইত্যাদির পরিচয় দেয়, তবে অনেকগুলি ব্যবহারিক ক্ষেত্রে বা নমুনা পরিস্থিতি নয় যা এ বি কে পরিবেশন করে They এ টু জেড অ্যালগরিদমগুলির জেনার, এবং কিছু হোম ওয়ার্ক সমস্যা, তবে আমার কাছে এগুলি কেবল এ দ্বারা সমাধান করা যেতে পারে, বা কেবল জেড দ্বারা, ইত্যাদি, এইভাবে প্রশ্নটি জিজ্ঞাসা করেছিল।
শে

5
যদি আপনি একাডেমিক আগ্রহকে সর্বাধিক অ্যালগরিদমের চেয়ে কম শেখার সর্বোত্তম ব্যবহারিক কারণটি বাদ দেওয়ার পক্ষে জোর করেন তবে আপনি তাদের কী তা বুঝতে পারেন এবং সর্বোত্তমগুলির সাথে রিফ্যাক্টরিং করে তাদের অনুকূল করতে পারেন। আপনি যদি ধনুক এবং তীর এমনকি কি না জানেন তবে আপনি বন্দুকের কাছে একটি ধনুক এবং তীরকে আপগ্রেড করতে পারবেন না।
candied_orange

1
আমরা প্রকৃতপক্ষে এই জাতীয় সিএস শিক্ষার প্রশ্নগুলিতে বিশেষভাবে সহায়তা করার জন্য একটি স্ট্যাক এক্সচেঞ্জ সাইটটি প্রস্তাব করেছি। আসুন আমাদের এখানে সমর্থন: অঞ্চল 51.stackexchange.com/proposals/92460/…
vk2015

উত্তর:


121

ওয়ার্কিং শিরোনাম ডেটা স্ট্রাকচারস, অ্যালগরিদমস এবং ট্রেড অফস সহ কোনও পর্যায়ে একটি পাঠ্যপুস্তক অপেক্ষা করা আছে । স্নাতক স্তরের আপনি প্রায় প্রতিটি অ্যালগরিদম বা ডেটা স্ট্রাকচার শিখতে পারবেন এমন কিছু বৈশিষ্ট্য রয়েছে যা এটি অন্যদের তুলনায় কিছু অ্যাপ্লিকেশনের জন্য আরও ভাল করে তোলে।

উদাহরণস্বরূপ বাছাই করা যাক, যেহেতু প্রত্যেকে স্ট্যান্ডার্ড সাজানো অ্যালগরিদমের সাথে পরিচিত।

প্রথমত, জটিলতা কেবল উদ্বেগ নয়। অনুশীলনে, ধ্রুবক বিষয়গুলি গুরুত্বপূর্ণ, যার কারণে (বলুন) দ্রুত বাছাই করা হিপ সাজ্টের চেয়ে বেশি ব্যবহৃত হয় যদিও তাত্ক্ষণিকভাবে সর্বাধিক মারাত্মক-জটিল জটিলতা রয়েছে।

হে(এনলগ ইন করুনএন)

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

উদাহরণস্বরূপ, একটি আধুনিক ভিডিও কার্ডে এক ধরণের 3 ডি ভিজুয়ালাইজেশন বা ভিডিও গেমটি বিবেচনা করুন, যেখানে আপনি পারফরম্যান্সের কারণে ক্যামেরার কাছাকাছি থেকে ক্যামেরার থেকে দূরে-থেকে-ক্যামেরায় অবজেক্টগুলি আঁকতে চাইছেন তবে আপনি যদি অর্ডারটি সঠিক না পান তবে হার্ডওয়্যার এটির যত্ন নেবে। আপনি যদি 3D পরিবেশের আশেপাশে ঘুরে বেড়াচ্ছেন তবে অবজেক্টের আপেক্ষিক ক্রম ফ্রেমের মধ্যে খুব বেশি পরিবর্তন হবে না, তাই প্রতিটি ফ্রেমকে একটি করে বাবল পাস করা যুক্তিসঙ্গত ট্রেডঅফ হতে পারে। (ভালভের উত্স ইঞ্জিন কণা প্রভাবের জন্য এটি করে))

অধ্যবসায়, সম্মতি, ক্যাশে লোকালতা, একটি ক্লাস্টার / ক্লাউডের উপর স্ক্যালাবিলিটি, এবং অন্যান্য সম্ভাব্য কারণগুলির একটি হোস্ট যেমন আপনার ডেটা স্ট্রাকচার বা অ্যালগরিদম অপরটির চেয়েও উপযুক্ত হতে পারে এমনকি আপনি যে অপারেশনগুলির যত্ন নেন তার জন্য একই গণনা জটিলতা দেওয়া হয়।

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


7
দুর্দান্ত উদাহরণ সহ দুর্দান্ত উত্তর! বাস্তব জগতে এমনকি বুদ্বুদ পাসের ব্যবহারিক ব্যবহার রয়েছে তা কী জানতেন না ...
ছিটিয়েছিলেন

1
@ শোল আমার কাছে গেম ব্যবসায়ে প্রচুর অভিজ্ঞতা নেই তবে উপরের সমস্তগুলি ভিন্ন ভিন্ন ডিগ্রির জন্য গুরুত্বপূর্ণ। (স্পষ্টতই, গেমগুলির জন্য আপনার যে ধরণের অ্যালগরিদম, ডেটা স্ট্রাকচার এবং গণিতের প্রয়োজন হয় তা সম্ভবত ডেটাবেস বা বায়োইনফরম্যাটিকসের জন্য প্রয়োজনীয় বা আপনার যা আছে তার থেকে আলাদা)) আমি যদি আপনি হতাম তবে আমি এখানে গিয়ে দেখতাম: হস্তনির্মিত। org এছাড়াও গেমদেব.স্ট্যাকেক্সেঞ্জ ডট কম এ
ছদ্মনাম

1
ক্যাশে দক্ষতা একটি বড় ফ্যাক্টর যা ভারী আন্ডাররিসেসড (গুগল "মেমরি ওয়াল")।
রাফেল

6
সাবধান, কুইকসোর্ট হিপসোর্টের তুলনায় গড়পড়তাভাবে দ্রুত , তবে হিপসোর্ট আরও সামঞ্জস্যপূর্ণ (এটি চলমান সময়ের ভিন্নতা কম, এবং সবচেয়ে খারাপ পরিস্থিতি আরও ভাল)। বাম এবং ডান থেকে কুইকসোর্টের রৈখিক স্ক্যানগুলির তুলনায় অ্যারেতে হিপসোর্টের জাম্পিং চার্চটি একবার ক্যাশে / পেজিং খেলায় আসে।
ভনব্র্যান্ড

1
@ শোল আপনি কোন ধরণের গেম ডেভেলপমেন্টে আগ্রহী? কমপক্ষে দুটি খুব আলাদা সাব-ফিল্ড রয়েছে, থ্রিডি গ্রাফিক্স এবং গেমপ্লে (যার মধ্যে এআই রয়েছে)। আমার কাছে কেবল গ্রাফিক্সের অভিজ্ঞতা রয়েছে তবে আমি বলতে পারি যে গ্রাফিক্সে ডেটা স্ট্রাকচার এবং গণিত অত্যন্ত গুরুত্বপূর্ণ এবং অ্যালগরিদমে পাশাপাশি কিছুটা কম পরিমাণেও। আপনি যদি ইঞ্জিন ব্যবহার করেন তবে বেশিরভাগ জিনিসগুলির অবশ্যই অবশ্যই যত্ন নেওয়া হবে তবে আপনার এখনও থ্রিডি জ্যামিতির প্রাথমিক গণিতটি বোঝা উচিত।
বাগানের মাথা

51

এক্ষেত্রে যে মেশিন মডেলগুলির (টিএম, র‌্যাম, পিআরএএম, ...) অবিচ্ছিন্ন ব্যয়ের ব্যবস্থা রয়েছে (চলমান সময়, মেমরির ব্যবহার, ক্যাশে মিস, শাখার ভুল ধারণা, বাস্তবায়নের জটিলতা, যাচাইকরণের সম্ভাব্যতা ...) , গড়-বনাম-নিকৃষ্টতম ক্ষেত্রে-পাশাপাশি পাশাপাশি একে অপরের বিরুদ্ধে বিবেচনার জন্য মূল্যায়ন বিবেচনাগুলি, প্রায়শই বুনিয়াদি পাঠ্যপুস্তকের নির্দিষ্টকরণের সুযোগের বাইরেও কার্যকরী পার্থক্য রয়েছে

কিছু উদাহরণ:

  • Mergesort স্থিতিশীল যেখানে কুইকসোর্ট নেই।
  • বাইনারি অনুসন্ধান গাছগুলি আপনাকে ক্রম পুনরায় সাজিয়ে দেয়, হ্যাশ টেবিলগুলি তা করে না।
  • বেলম্যান-ফোর্ড নেতিবাচক প্রান্তের ওজন নিয়ে কাজ করতে পারে, ডিজকস্ট্রা পারে না।

এছাড়াও করার জন্য ডৌটিক বিবেচনা রয়েছে :

  • সহজগুলির আগে আরও জড়িত সমাধান বোঝা কত সহজ? (এভিএল গাছগুলি (এবং তাদের বিশ্লেষণ) বিএসটিএস ছাড়াই; ফোর্ড-ফুলকারসন ছাড়াই ডাইনিক; ...)
  • আপনি যখন অনেকগুলি সমস্যার সমাধানের তুলনায় সমস্যার প্রতি একমাত্র সমাধানের সংস্পর্শে আসেন তখন কি একই নীতিগুলি এবং নিদর্শনগুলি দেখতে পান?
  • সমস্যার প্রতি একমাত্র সমাধানের প্রদর্শন কি যথেষ্ট প্রশিক্ষণ দেয় (আয়ত্তের দিকে)?
  • কোন সমাধানগুলির প্রস্থটি আপনাকে জানতে পেরেছিল (যাতে চাকাটি আপনাকে বার বার পুনরুদ্ধার করতে আটকাতে পারে)?
  • যখন প্রতি সমস্যা শুধুমাত্র একটি সমাধানের সংস্পর্শে আসে, আপনি কি অন্যান্য সমাধানগুলি বন্য দেখতে পাবেন (বলুন, একটি বাস্তব-ওয়ার্ল্ড প্রোগ্রামিং লাইব্রেরিতে)?

  1. এইটি এমন কিছু বিষয় আমরা দেখতে অনেক প্রোগ্রামার ধরনের যারা তাদের নিষ্পত্তি একটি সমৃদ্ধ সি এস টুলবক্স না থেকে।

4
যুক্তিযুক্ত যুক্তি যুক্ত করার জন্য +1! বেশ কয়েকটি যুক্তি সম্পর্কিত (বিশেষত দ্বিতীয় এবং তৃতীয়) সম্পর্কিত, কীভাবে অ্যালগরিদম এবং ডেটা স্ট্রাকচারগুলি বিকাশিত এবং অনুকূলিত করা হয় তা বিকাশ এবং অপ্টিমাইজেশন কৌশল এবং ট্রেডঅফগুলির বোঝার শিক্ষা দেয় (কেবল "কী" নয় "এছাড়াও" কীভাবে "এবং" কেন "শেখা যায় )।
পল এ। ক্লেটন

2
এক আরও বিবেচনা করে বিশ্লেষণ বিভিন্ন বিকল্প সম্ভবত অস্বাভাবিক সেটিংসের জন্য বিশ্লেষণ নতুন আলগোরিদিম জন্য দরকারী সরঞ্জাম উদাহরণ উপলব্ধ করা হয়।
ভনব্র্যান্ড

1
ভাল পয়েন্ট, @ ভনব্র্যান্ড। স্পোর গাছগুলির আচরণ বোঝার জন্য ইমোরাইজড জটিলতা বিশ্লেষণ আবিষ্কার করা হয়েছিল, তবে স্প্লে গাছগুলি অনুশীলনে খুব কমই ব্যবহৃত হয়। ঠিক আছে, যাইহোক প্রকাশিত গাছগুলি স্প্লে না not উইন্ডোজ এনটি কার্নেল বিখ্যাতভাবে ভার্চুয়াল মেমরি মানচিত্র প্রয়োগের জন্য স্প্লে গাছগুলি ব্যবহার করে তবে এটি প্রতিটি অনুসন্ধানে পুনরায় অর্ডার দেয় না।
ছদ্মনাম

1
@ ভনব্র্যান্ড হ্যাঁ আমি বুঝতে পারি যে সাধারণত অ্যালগোরিদম ক্লাসে থাকা সরঞ্জামবক্স-মাত্রায় আগ্রহী কেউ কীভাবে সেই কারণেই উপহাস করবেন।
রাফেল

7

ইন বাস্তব জগতে , কিছু সময়ে আপনি সফ্টওয়্যার যে অন্য মানুষের একটি দল দ্বারা লেখা হয়েছে কাজ হওয়ার সম্ভাবনা আছে। আপনার জন্মের আগে এই সফ্টওয়্যারটির কিছু লেখা থাকবে!

সুতরাং যে অ্যালগরিদম / ডেটা কাঠামো ব্যবহৃত হয় তা বোঝার জন্য, বিপুল সংখ্যক অ্যালগরিদম / ডেটা স্ট্রাকচার, যা "আর্টের অবস্থা" হিসাবে বিবেচিত হয় না সেগুলি সহ অনেকগুলি বিষয় সম্পর্কে জানতে খুব সহায়ক।

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

এটিই এমন কাউকে সেট করে যা যিনি কম্পিউটার বিজ্ঞান অধ্যয়ন করেছেন এমন কাউকে বাদ দিয়ে যারা কীভাবে প্রোগ্রামিং করতে শিখেছে। বেশিরভাগ চাকরিতে যেখানে আমি কাজ করেছি, এমন সময় এসেছে যখন কম্পিউটার বিজ্ঞান অধ্যয়ন করে আমি এমন একটি সমস্যা সমাধান করতে পারতাম যে একটি "বই থেকে শিখেছি" প্রোগ্রামার করতে পারত না, তবে আমি দেখলাম যে কম্পিউটার বিজ্ঞান অধ্যয়ন করা আমার 95% সময়ই কোনও সুবিধা দেয় নি অন্যান্য অভিজ্ঞ প্রোগ্রামারদের উপর


আপনি সমাধান করার চেষ্টা করছেন এমন 95% জিনিস মেশিন লার্নিং সম্পর্কিত। আমি দেখতে পাচ্ছি না যে সাধারণ অগ্রগতিবিদ এমনকি বাস্তব এমএল সমস্যাগুলির মধ্যে যে কোনও সমস্যার মুখোমুখি হওয়ার সঠিক সুযোগ পেতে পারে।
পিনোকিও

3
লক্ষ্য: 5% এর চেয়ে ভাল হারের সাথে একটি চাকরি পান।
রাফায়েল

মনে রাখবেন সিএস অধ্যয়ন অ্যালগরিদম এবং ডেটা কাঠামো সম্পর্কে জ্ঞান সংগ্রহের এক দুর্দান্ত উপায়। কোডিং হয় পরিকল্পনাটি জন্য - শ্রেষ্ঠ বৃত্তি।
গ্রেইবার্ড

5

অনেক লোক যথাযথভাবে উল্লেখ করেছেন যে প্রায়শই কোনও সেরা অ্যালগরিদম নেই - এটি পরিস্থিতির উপর নির্ভর করে।

এমন এক সম্ভাবনাও রয়েছে যে একদিন আপনি অপরিচিত পরিস্থিতিটি দেখতে পাবেন। আপনি যত বেশি অ্যালগরিদম জানেন, তত বেশি সম্ভাবনা আপনি এটির পক্ষে জানেন যা প্রায় একটি সমাধান যা আপনি বেস হিসাবে ব্যবহার করতে পারেন।


5
এই উত্তরটি কেবল বয়স্কদের থেকে পয়েন্টগুলি পুনরাবৃত্তি করে।
রাফেল

1

প্রচুর দুর্দান্ত উত্তর, আমার মনে হয় কেবল কিছু অনুপস্থিত, যদিও রাফেলের উত্তরটিতে কিছুটা উল্লেখ রয়েছে।

সহজেই বাস্তবায়নের বিষয়টিও বিবেচনার জন্য।
এটি সাধারণত বাছাই করা অ্যালগরিদমগুলির সাথে সমস্যা নয়, কারণ বেশিরভাগ প্ল্যাটফর্ম / ভাষাগুলিতে ইতিমধ্যে একটি প্রয়োগ করা হয়েছে (এবং আপনি যা করতে পারেন তার থেকে প্রায়শই ভাল) তবে আরও অস্বাভাবিক অ্যালগরিদম উপলভ্য নাও হতে পারে।
আপনার সমস্যার উপর নির্ভর করে, বাস্তবায়নের সময় 2 সপ্তাহের তুলনায় 1 দিন হলে আপনার নিখুঁত সেরা অ্যালগরিদমের প্রয়োজন হবে না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.