অ্যালগরিদমগুলি কি কম্পিউটার আর্কিটেকচারের উপর নির্ভর করে?


22

আমি কোথাও পড়েছি (এটি কোন বইটি ভুলে গেছে) যে অ্যালগরিদমগুলি কম্পিউটার আর্কিটেকচারের থেকে পৃথক। কেউ কেউ এমনকি অ্যালগরিদমগুলি নিজেরাই গণনা (মেশিন?) বলে?

অন্যদিকে, সমান্তরাল প্রোগ্রামিংয়ের বইগুলির সমান্তরাল অ্যালগোরিদমগুলির উপর অধ্যায় রয়েছে। মনে হচ্ছে সমান্তরাল অ্যালগরিদমগুলি সমান্তরাল স্থাপত্যের উপর নির্ভর করে?

আমার মনে হয় আমি কিছু বড় ছবি মিস করছি? ধন্যবাদ।


কুইকোর্টে ভাল হয় তাহলে সাজানোর সাজ?
একে_ফেব্রুয়ারি

সমান্তরাল অ্যালগরিদমগুলি একক থ্রেডযুক্ত আর্কিটেকচারে চলতে পারে। সময় স্লাইসিং সেই বেশিরভাগ আর্কিটেকচারের দ্বারা সমর্থিত, এবং কে বলে যে সমান্তরাল কাজগুলি একই সাথে চলতে হবে? যদি A এবং B সমান্তরাল হয় তবে কেন আপনি A কে B চালাতে পারবেন না? বা যদি অন্যটির উপর নির্ভর করে তবে সেগুলি আন্তঃলিভ করুন (তবে এটি সাধারণত একটি খারাপ ধারণা)।

3
অ্যালগরিদমগুলি একটি বিমূর্ত মেশিনের বিপরীতে নির্দিষ্ট করা হয় । একটি সাধারণ যা আজকের মাল্টি-কোর ব্যক্তিগত কম্পিউটারগুলির একটি আদর্শীকরণকে বলা হয় PRAM (প্যারালাল র‌্যান্ডম অ্যাক্সেস মেশিন , যা কখনও কখনও EREW (একচেটিয়া মেমরি পড়ুন / লিখুন) বা সিআরসিডাব্লু (সমবর্তী মেমরি পড়ুন / লিখুন) হিসাবে
শ্রেণিবদ্ধ হয়

@ রওং: তাহলে কি অ্যাবস্ট্রাক্ট মেশিনগুলি কম্পিউটার আর্কিটেকচারের থেকে সম্পূর্ণ স্বাধীন, যদি অ্যালগরিদম হয়?
টিম

2
অ্যালগরিদম (এবং ডেটা স্ট্রাকচার) নির্দিষ্ট আর্কিটেকচারের জন্য অনুকূলিত করা যেতে পারে - যেমন একটি বি + ট্রি একটি সংঘবদ্ধ ডেটা স্ট্রাকচার যা আর্কিটেকচারের জন্য অনুকূলিত করা হয় যেখানে বেশ কয়েকটি ছোট ব্লক পড়ার চেয়ে ডেটার একটি বৃহত ব্লক পড়া সস্তা।
ব্যবহারকারী 253751

উত্তর:


20

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

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


13

অ্যালগরিদমগুলি কম্পিউটার আর্কিটেকচার থেকে স্বতন্ত্র। এটি কারণ অ্যালগরিদমগুলি এমন একটি প্রক্রিয়া নির্ধারণ করে যা একটি সমস্যা সমাধান করে। আর্কিটেকচার নির্বিশেষে, সাজানো অ্যালগরিদম সর্বদা বাছাই করা হবে will এটি হঠাৎ কিছু আর্কিটেকচারে 3 ডি অঙ্কন সরবরাহ করবে না।

আপনি যদি এটি সম্পর্কে চিন্তা করেন তবে এটি আসলে স্বজ্ঞাত। গুগল ক্রোম (যা নিছক আলগোরিদিমগুলির সংগ্রহ) কোনও ওয়েব ব্রাউজার যা কোনও স্থাপত্যের জন্য সংকলিত হয়। এটি হঠাৎ করে কোনও স্থাপত্যের ডিভাইস ড্রাইভার হয়ে উঠবে না।

তবে যে গতিতে অ্যালগোরিদমগুলি চালিত হয় তা নির্ভর করে আর্কিটেকচারের উপর। এবং কিছু অ্যালগরিদম আর্কিটেকচারের উপর নির্ভর করে অন্যদের চেয়ে দ্রুত কাজ করে।

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

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

কিন্তু সেই অ্যালগরিদমগুলি এখনও একই জিনিস করে। স্থপতিগুলি তারা যা করে তা পরিবর্তন করে না।


"তবে যে গতিতে অ্যালগোরিদমগুলি চালিত হয় তা আর্কিটেকচারের উপর নির্ভর করে And আমি মনে করি এটি একটি মূল্যবান উত্তর দেয়।
রাদওয়ান নুরি গেমেন

4

"মনে হচ্ছে সমান্তরাল অ্যালগরিদমগুলি সমান্তরাল স্থাপত্যের উপর নির্ভর করে?"

আমার মতে উত্তরটি সহজভাবে: না। জেনারেল আমি শুধু সম্পত্তি পেতে

  • উপমা
  • শব্দের আকার (অন্তর্নিহিত সংস্থান সীমা)

যখন হার্ডওয়্যার আর্কিটেকচার চিন্তা।

সমান্তরালতার কথা উল্লেখ করে আপনার কোনও সমান্তরাল অ্যালগরিদম হতে পারে ব্যাচ গণনা করা এবং সিরিয়াল কাজ করার জন্য কোনও সমান্তরাল খিলান যাতে অ্যালগরিদম তার উপর নির্ভর করে না। শব্দের আকার সংখ্যাগত স্থায়িত্বের জন্য সমস্যা হতে পারে তবে নিজেই অ্যালগরিদমের কাছে নয়। Bit৪ বিটের মতো রিসোর্স সীমাগুলি কেবলমাত্র 2 ^ 64 বিভিন্ন সংখ্যা বর্ণনা করতে পারে সমস্যা হতে পারে, তবে যাইহোক উপাদানগুলি সীমিত।

অবশ্যই কিছু অ্যালগরিদম থাকতে পারে যা কিছু বর্ধিত নির্দেশের সেটগুলির উপর নির্ভর করে তবে কমপক্ষে সবকিছুই প্রাথমিক গণিতের সাথে বর্ণনা করা যায়।

উদাহরণস্বরূপ কোয়ান্টাম কম্পিউটিংয়ের সাথে কিছু বিগ-ও মান পরিবর্তন হতে পারে এবং তারপরে আমি এটি বলতে পারি

"অ্যালগরিদমগুলি কম্পিউটার আর্কিটেকচার থেকে স্বতন্ত্র"

আর সত্য নয়।


4

অ্যালগরিদমগুলি কম্পিউটার আর্কিটেকচারের উপর নির্ভর করে না, তবে কোনও নির্দিষ্ট অ্যালগরিদম চালনার দক্ষতা আর্কিটেকচারের উপর নির্ভর করে। যে কোনও টুরিং সম্পূর্ণ মেশিনগুলি অন্য যে কোনও টিউরিং সম্পূর্ণ মেশিন অনুকরণ করতে পারে, যদিও কিছু মেশিন অন্য জিনিসগুলির তুলনায় এক জিনিস থেকে ভাল be

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

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


3

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

অনুশীলনে এমন অ্যালগরিদম রয়েছে যা ক্যাশে হার্ডওয়্যার এবং সিঙ্ক্রোনাইজেশন আদিম ব্যবহারের জন্য অনুকূল করে একই "ও" জটিলতার জন্য আরও ভাল রানটাইম অর্জনের চেষ্টা করে।


3

হ্যা এবং না. এটি আপনার অ্যালগোরিদমটি চালানোর জন্য প্রয়োজনীয় প্রতিবন্ধকতাগুলি এবং পূর্ববর্তী শর্তগুলির উপর নির্ভর করে ।

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

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

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

হার্ডওয়্যার আর্কিটেকচার থেকে অ্যালগরিদমগুলি এত বিমূর্ত না হওয়ার আরেকটি কারণ হ'ল যখন আপনাকে কিছু সীমাবদ্ধতাগুলি পূরণ করতে হবে

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

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

সুতরাং, একটি অ্যালগরিদম ডিজাইনের বিমূর্ততা এবং সীমাবদ্ধতার মধ্যে একটি বাণিজ্য বন্ধ হতে পারে।

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

আপনার আগ্রহী হতে পারে এমন কিছু সম্পর্কিত কীওয়ার্ড:


1
কেন তারা বেশিরভাগ অ্যালগরিদমগুলি ভন নিউম্যান বা হার্ভার্ড স্থাপত্যে চলছে কিনা তা কেন যত্ন নেবে? বেশিরভাগ এম্বেড থাকা সিস্টেমগুলি পরে থাকে তবে বেশিরভাগ অ্যালগরিদমগুলি চালাতে কোনও সমস্যা হয় না। এছাড়াও, "ক্যাশে-বিস্মৃত আর্কিটেকচার" এর লিঙ্কটি প্রশংসিত হয়েছিল যেহেতু আমি এই শব্দটি আগে শুনিনি, তবে বাক্যটি সঠিক বলে আমি মনে করি না। আমি যা বুঝি সেগুলি থেকে, ক্যাশে-বিস্মৃত অ্যালগরিদমগুলি ক্যাশে অনুসারে তাদের অ্যাক্সেসের ধরণগুলি খাপ খায় না - বিপরীতে, তারা অ্যাক্সেস প্যাটার্নগুলি ব্যবহার করে যা প্রায় কোনও ক্যাশে ভালভাবে কাজ করবে তাই তাদের কীভাবে কীভাবে যত্ন নেওয়া উচিত নয় about কাজ করে।
সুপারক্যাট

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

2

আপনার গাণিতিক বা কম্পিউটিং অ্যালগরিদমের সাথে সাধারণভাবে একটি অ্যালগরিদমকে বিভ্রান্ত করা উচিত নয়। আপনি যদি কম্পিউটিং অ্যালগরিদম বলতে বোঝায় তবে হ্যাঁ, তারা মেশিন আর্কিটেকচার থেকে স্বতন্ত্র।

উইকিপিডিয়া থেকে অ্যালগরিদম সংজ্ঞা:

গণিত এবং কম্পিউটার বিজ্ঞানে , একটি অ্যালগরিদম হ'ল একটি স্বয়ংসম্পূর্ণ পদক্ষেপ দ্বারা পরিচালিত ক্রিয়াকলাপগুলির সেট set অ্যালগরিদমগুলি উপস্থিত রয়েছে যা গণনা , ডেটা প্রসেসিং এবং স্বয়ংক্রিয় যুক্তি সম্পাদন করে।

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

একটি সাধারণ সংজ্ঞায়, অ্যালগরিদমটি কেবল একটি রেসিপি (নির্দেশের অনুক্রম)। আমি মনে করি আপনি যে নির্দেশনা সেট বা অপারেশন ব্যবহার করতে পারবেন তা না জেনে আপনি কোনও অ্যালগরিদমের কথা ভাবতে পারবেন না; গাণিতিক ক্রিয়াকলাপ গণনা সম্পর্কে, তারপরে একটি অ্যালগরিদম যার মধ্যে ' ওভেন হিট আপ ' নামে একটি পদক্ষেপ অন্তর্ভুক্ত হয় তা গাণিতিক অ্যালগরিদম নয় তবে আপনি এটি কোনও শেফকে দিতে পারেন, কারণ তিনি এটি কার্যকর করতে জানেন।

তারপরে, আপনি এমন একটি মেশিন তৈরি করতে পারেন যা এক্স, ওয়াই, জেড .... করতে পারে এইগুলির প্রত্যেকটি আপনার নির্দেশ অনুসারে আপনার অ্যালগরিদমে ব্যবহৃত হতে পারে। তবে যদি তারা সমস্ত বন্ধ গণনা সম্পর্কে (আসলে, অ-ইন্টারেক্টিভ ডিটারমিনিস্টিক ডিজিটাল ছোট-ধাপের গণনা) হয় তবে আপনার মেশিনটি ট্যুরিং মেশিনের সমতুল্য প্রমাণ করতে পারে । তবে আপনি যদি অন্য ধরণের গণনা (অবিরত মান বা ইন্টারেক্টিভ গণনা [যদিও আমি নিশ্চিত নই যে তারা আসলেই অন্য ধরণের গণনা]] বা এমনকি কোনও-কম্পিউটিংয়ের কাজগুলিও লক্ষ্য করে না, আপনি যে মেশিনগুলি সম্পাদন করতে পারেন সেগুলি সম্পর্কে আপনি ভাবতে পারেন।

এই প্রশ্নোত্তর অ্যালগরিদমের উপর আরও বিস্তৃত দৃষ্টিকোণ পেতে আকর্ষণীয়।


1

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

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

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


1

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

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

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


1

অ্যালগরিদমগুলি ধাপগুলির একটি ক্রম। তারা কার্যকর করছে (বা না) তার উপর নির্ভর করে না।

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


0

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

একটি অ্যালগরিদম তৈরি করুন যা মাল্টিকোর উপলব্ধ হলে একাধিক কোরে লোড বিতরণ করবে।

এখন আপনি কি ভাবতে পারেন যে আপনার অ্যালগোরিদম আর্কিটেকচারের উপর নির্ভরশীল হবে কিনা? অবশ্যই হ্যাঁ

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