গণনার কোন মডেল "সেরা"?


41

১৯৩ In সালে টুরিং একটি টিউরিং মেশিন বর্ণনা করেছিলেন। তার পর থেকে গণনার অনেকগুলি মডেল এমন একটি মডেল সন্ধানের প্রয়াসে প্রকাশিত হয়েছে যা বাস্তব কম্পিউটারের মতো তবে অ্যালগোরিদমগুলি ডিজাইন ও বিশ্লেষণ করার পক্ষে এখনও সহজ।

ফলস্বরূপ, আমাদের কাছে গণনার বিভিন্ন মডেলের জন্য উদাহরণস্বরূপ, SORT- সমস্যাটির জন্য ডজন ডজন অ্যালগরিদম রয়েছে। দুর্ভাগ্যক্রমে, আমরা এমনকি নিশ্চিত হতে পারি না যে চলমান সময় হে (এন) সহ একটি শব্দ র‌্যামে অ্যালগরিদমের প্রয়োগ বিট-ভেক্টর অপারেশন সহ চলমান সময় ও (এনলগন) সহ একটি অ্যালগরিদমের প্রয়োগের চেয়ে দ্রুত চলবে in একটি শব্দ র‌্যাম (আমি অবশ্যই "ভাল" বাস্তবায়ন সম্পর্কে কথা বলছি)।

সুতরাং, আমি বুঝতে চাই যে অ্যালগোরিদমগুলি ডিজাইনের জন্য বিদ্যমান মডেলগুলির মধ্যে কোনটি "সেরা" এবং আমি গণনার মডেলগুলির উপর একটি আধুনিক ও বিস্তৃত জরিপটি খুঁজছি, যা মডেলগুলির পক্ষে এবং ঘৃণা এবং তাদের ঘনিষ্ঠতা দেয়।


1
এখানে পুনঃনির্দেশিত হলেও ম্যাথওভারফ্লোতে ( mathoverflow.net/questions/44558/… ) ক্রস পোস্ট ।
ডেভ ক্লার্ক

@ টাটিয়ানা, ভাল প্রশ্ন, "সেরা" বলতে কী বোঝ? আপনার অর্থ কি তাত্ত্বিক রান-টাইম সহ এমন একটি মডেল যা "আসল" রান-টাইমের খুব কাছাকাছি?
মোহাম্মদ আল-তুর্কিস্তি

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

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

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

উত্তর:


30

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

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

O(n)O(nlgn)nn

অ্যালগরিদম এবং "বাস্তবতা" সম্পর্কে একটি চূড়ান্ত মন্তব্য: আপনি কী অর্জন করতে চাইছেন তা সর্বদা মনে রাখবেন। আমরা যখন অ্যালগরিদমগুলিতে কাজ করি তখন আমরা খুব শক্ত সমস্যাগুলি সমাধানের চেষ্টা করি (উদাঃ 50 টি ভেরিয়েবলের উপর স্যাট, বা একটি বিলিয়ন সংখ্যা বাছাই)। যদি আপনি 200 টি সংখ্যা বাছাই করার চেষ্টা করছেন বা 20 ভেরিয়েবলগুলিতে স্যাট সমাধান করছেন, আপনার কোনও অভিনব অ্যালগরিদমের দরকার নেই। এ কারণেই বাস্তবে বেশিরভাগ অ্যালগরিদমগুলি তুচ্ছ ধরনের। এটি অ্যালগরিদমিক গবেষণা সম্পর্কে খারাপ কিছু বলে না - আমরা কেবল সেই অসাধারণ 1/1000 এর মধ্যে যে সত্যিকারের সমস্যা হতে পারে তার মধ্যে আগ্রহী হয়ে উঠি ...


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

10

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

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

সমস্ত কিছু বলার পরেও, আপনি যদি জানতে চান যে আপনার অ্যালগোরিদমটি দ্রুত চলার সম্ভাবনা রয়েছে, তবে হয় সম্ভবত :-)


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

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

8

মডেলগুলি কেবলমাত্র মডেল। আমি এটিকে খুব বেশি দূরে ঠেলে দেব না; তারা আপনার অ্যালগরিদমের কিছু দিক সম্পর্কে কিছু বলে, তবে পুরো সত্যটি নয়।

আমি আপনাকে পরামর্শ দেব যে আপনি কেবল আপনার বিশ্লেষণে স্ট্যান্ডার্ড শব্দটি র‌্যাম মডেলটি ব্যবহার করুন এবং অ্যালগরিদমটি বাস্তবায়ন করুন এবং দেখুন এটি বাস্তবে কতটা কার্য সম্পাদন করে।

(বাস্তবে কেবল আপনার অ্যালগরিদমকে কখনও চালিত না করে বাস্তবায়ন করা এটি সম্পর্কে ইতিমধ্যে আপনাকে অনেক কিছু বলে ... একটি বিষয় এটি কার্যকরভাবে কার্যকর করা যায় implement)


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

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

5

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

আধুনিক মাল্টি-কোর কম্পিউটারগুলির জন্য, ২০০৮ সালে আর্জি, গুডরিচ, নেলসন এবং সিচিনাভা প্রবর্তিত সমান্তরাল বৈকল্পিক একটি সঠিক মডেল হতে পারে।


5

যদি আপনার জীবনকে আরও জটিল করার জন্য "সেরা" গণনার মডেলটি বোঝায়, তবে আপনি ওল্ফ্রামের 2-রাজ্য, 3-প্রতীক ইউনিভার্সাল টিউরিং মেশিন ব্যবহার করতে পারেন।

পেশাদাররা : কারণ এবং উন্মত্ততার মধ্যে সূক্ষ্ম লাইনে হাঁটার সংবেদন ব্যতীত আর কিছুই নয়;

কনস : টন ...

:-D (কেবল একটি রসিকতা, আমি মূলত পূর্ববর্তী উত্তরগুলির সাথে একমত ...)


1

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

বিমূর্ত থেকে উদ্ধৃতি:

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

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

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