অ্যালগরিদম ঠিক কী?


12

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

ফ্যাক্টরিয়াল ফাংশন বিবেচনা করুন। সাধারণত আমরা এই ফাংশনটির মতো সংজ্ঞা দিই

 int fact(int n) 
 { 
 int r = 1; 
 for(int i=2;i<=n;i++) 
 r = r*i; 
 return r; 
 } 

আমি এটিকে একটি অ্যালগরিদম বলব এবং এটি করার সঠিক উপায় এটি নিয়ে কোনও সন্দেহ নেই। তারপরে, আমি ভাবলাম "আমি কি স্থির সময়ে এই কাজটি করতে পারি?", যা নিম্নলিখিত ধারণাটি দেয়: আমি যদি অ্যারে [এন] এর ফ্যাক্টরিয়াল রাখে সেখানে পূর্ণসংখ্যার একটি অ্যারে থাকি তবে কী হবে? একবার এই অ্যারেটি পূর্ণ হয়ে গেলে আমি কেবল এটিকে সত্য হিসাবে সংজ্ঞায়িত করতে পারি:

 int fact(int n) 
 { 
 return array[n]; 
 } 

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

দ্রষ্টব্য যে এই ধারণাটি তার আর্গুমেন্টগুলির স্বতন্ত্রভাবে পূর্ণসংখ্যার উপর পরিচালিত যে কোনও ক্রিয়াকলাপে প্রসারিত হতে পারে, ফাংশনটিতে 2 টি আর্গুমেন্ট থাকলে আমি কেবল একটি ম্যাট্রিক্স ব্যবহার করতে হবে, বা ফাংশনটিতে 3 টি আর্গুমেন্ট থাকলে 3 ব্যবহার করতে হবে and এছাড়াও, এই সমাধানগুলি কেবল স্মৃতিশক্তি গ্রহণের কারণে ব্যবহার করা হয় না?

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

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

বাছাই করা কিছুটা জটিল হবে তবে তবুও অনুসন্ধান এবং সংযোজন O (1) সময়ে করা যেতে পারে।


আপনার দ্বিতীয় ফাংশনে প্যারামিটার হিসাবে অ্যারে থাকা উচিত। অন্যথায় আপনি অন্তর্নিহিত রাষ্ট্রের আবশ্যকীয় ফাঁদে হারিয়ে যেতে পারেন, যা প্রোগ্রামিংয়ে দরকারী তবে আপনার কোড সম্পর্কে যুক্তিযুক্ত হতে খুব কঠিন করে তুলতে পারে।
jmite

হ্যাঁ, আপনার দ্বিতীয় কোডটিকে একটি অ্যালগরিদম বলা যেতে পারে যার জন্য ইনপুটটি হল নম্বর এন এবং অ্যারে যাতে সমস্ত ফ্যাক্টরিয়াল রয়েছে। প্রথম কোডে অ্যালগরিদমের কেবল একটি ইনপুট থাকে অর্থাৎ সংখ্যা এন।
অঙ্কুর

বাধ্যবাধকতা: আমি এই সংক্ষিপ্ত বিবরণ ["অ্যালগরিদম"] এর মধ্যে আবশ্যক যে ধরণের উপাদানটি আমি বুঝতে পারি তা সংজ্ঞায়িত করার জন্য আর চেষ্টা করব না এবং সম্ভবত আমি কখনই বুদ্ধিমানভাবে এটিতে সফল হতে পারিনি। তবে আমি এটি যখন জানি তা আমি জানি এবং নীচের পোস্টগুলিতে বর্ণিত জিনিসগুলি এমন নয়।
প্যাট্রিক 87

এই প্রশ্নের সাথে সম্পর্কিত (তবে সরাসরি এটির উত্তর দিচ্ছে না), "অ্যালগোরিদম কী?" ইউরি Gurevich, মাইক্রোসফট গবেষণা, কারিগরী প্রতিবেদন MSR-টিআর-2011-116 দ্বারা research.microsoft.com/pubs/155608/209-3.pdf
godfatherofpolka

আপনি বলছেন: "... আমার যদি পূর্ণসংখ্যার একটি অ্যারে থাকে যেখানে অ্যারে [এন] n এর ফ্যাক্টরিয়াল থাকে? একবার এই অ্যারেটি পূরণ হয়ে গেলে ...."। আপনি কীভাবে সমস্ত পূর্ণসংখ্যার ফ্যাক্টরিয়ালগুলির সাথে একটি অ্যারে পূরণ করতে যাচ্ছেন? এই অ্যারেটির অসীম আকার থাকবে এবং এটি পূরণ করতে অসীম সময় লাগবে। সুতরাং আপনার প্রশ্নটি অসুস্থ হয়ে উঠেছে।
এপি

উত্তর:


9

একটি জনপ্রিয় পাঠ্যপুস্তকের একটি অ্যালগরিদমের অনানুষ্ঠানিক সংজ্ঞা কিছু যায়:

একটি অ্যালগরিদম হ'ল (1) একটি সংজ্ঞায়িত কম্পিউটেশনাল পদ্ধতি (2) যা কিছু ইনপুট নেয় এবং (3) একটি ভাল সংজ্ঞায়িত গণনীয় সমস্যার জন্য কিছু আউটপুট (4) উত্পাদন করে।

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

আপনার দ্বিতীয় ক্ষেত্রে: সমস্যাটি হ'ল অ্যারে এলিমেন্টটি অবস্থান n (সংজ্ঞার অংশ 4) এ ইনপুট হিসাবে দেওয়া হয়েছে (সংজ্ঞার অংশ 3), কোডটি সম্পাদন করা সংজ্ঞা বর্ণনা করে (সংজ্ঞাটির অংশ 2), আউটপুট হল অবস্থান n এ (সংজ্ঞাটির 1 অংশ) এ উপাদান।

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

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


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

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

2
এটি অপরিশোধিত তথ্য হিসাবে প্রকাশিত হয়, যেমন ওপি প্রদর্শিত হয়েছে। অ্যারেটি সমস্ত ফ্যাকটোরিয়াল দিয়ে শুরু করা হয়। এটি সীমাবদ্ধ বর্ণনা। এটি কেবল অপারেটিভভাবে সীমাবদ্ধ নয়। একই ভাবে, সসীম ছাড়া একটি নির্দিষ্ট বিবরণ নেই। {(n,n!):nN}
যুবাল ফিল্মাস 18

অ্যারের বিবরণ সীমাবদ্ধ তথ্যের টুকরো হিসাবে প্রকাশযোগ্য তবে অ্যারে নিজেই তা নয়।
রণবীর

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

5

সর্বাধিক বিস্তৃতভাবে, একটি অ্যালগরিদম কোনও সমস্যা সমাধানের জন্য বিভিন্ন ধাপ

সিএসে, অ্যালগরিদম শব্দটি ব্যবহার করার সময় নিম্নলিখিতগুলি সাধারণত বোঝা / ধরে নেওয়া হয়:

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

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

নোট করুন যে চার্চ-টিউরিং থিসিস বলেছেন যে আমরা মনে করি টুরিং মেশিনের চেয়ে অ্যালগরিদমের আর কোনও "শক্তিশালী" আনুষ্ঠানিককরণ নেই।

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

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

এই অ-ইউনিফর্ম ধরণের গণনা সাধারণত তাত্ত্বিক সিএসে সার্কিট দ্বারা মডেল করা হয়। প্রতিটি সম্ভাব্য ইনপুট আকারের জন্য আপনি একটি পৃথক সার্কিট নির্মাণ বিবেচনা করুন।

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


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

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

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

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

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

4

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

n!n!) সি এর তুলনায় এতে আরও দক্ষতার সাথে গণনা করা যেতে পারে

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


nn!

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

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


3
lol "একটি অ্যালগরিদম সি ... তে লেখা একটি প্রোগ্রাম?"?!?!?
vzn

2
"একটি অ্যালগরিদম হ'ল একটি প্রোগ্রাম যা সিতে লেখা হয় ... আপনি কেন ভাষাটি নির্দিষ্ট করছেন? এটি অজ্ঞান করে তোলে।
nouney

1
@Nouney আমি কেবল কংক্রিট হওয়ার চেষ্টা করছি আপনার প্রিয় প্রোগ্রামিং ভাষাটিও টুরিং-সম্পূর্ণ।
যুবাল ফিল্মাস

@ ইউভালফিল্মাস ভাল আপনি কংক্রিট নন, আপনি বিভ্রান্ত করছেন।
nouney

@ নোনি আপনার নিজের উত্তর যুক্ত করতে আপনাকে স্বাগতম।
যুবাল ফিল্মাস

4

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

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

O(logA)AO(logn)O(logn!)O(n(logn)2)sn=O(2s)O(2s s2)O(1)


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

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

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

3

কয়েকটি পর্যবেক্ষণ যা সহায়ক হতে পারে:

সমস্যাগুলি হ'ল অনুমতিযোগ্য ইনপুট এবং সংশ্লিষ্ট আউটপুট সম্পর্কে বিবৃতি। তারা আমরা যা সমাধান করতে চাই're অ্যালগরিদমগুলি গণনা পদ্ধতি। আমরা বলতে পারি যে কোনও সমস্যার ক্ষেত্রে একটি অ্যালগরিদম সঠিক , যদি এটি ইনপুট গ্রহণ করে যা সমস্যার সাথে সম্মতিযুক্ত এবং এটি সমস্যার বর্ণনা অনুসারে আউটপুট তৈরি করে।

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

  1. nn!
  2. n>0n!< INT_MAXn!

আপনার প্রথম কোড স্নিপেটের কিছু ব্যাখ্যা:

  1. এটি সিউডোকোড যা বিশদ বিবরণ ব্যতীত সি / সি ++ এর সাথে সাদৃশ্যপূর্ণ। intউদাহরণস্বরূপ সত্যই "কোনও পূর্ণসংখ্যার" অর্থ "
  2. এটি এমন ব্যাখ্যা করা দরকার যেমন এটি বাস্তব সি / সি ++ প্রোগ্রাম ছিল were

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

arrayarraynn>0n!< INT_MAXn!n<0

nn!232n!264

kknknk+n


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

1

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

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


3
কেন এটি টিউরিং সম্পূর্ণ ভাষায় থাকতে হবে?
বাবু

1

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

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

কিছু সমস্যা চিহ্নিত করা

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

π

πসম্ভবত প্রায় সব গাণিতিক অর্থে। তবে এর সংজ্ঞাগুলিতে আরও নির্ভুলতার প্রয়োজন হবে।

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

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

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

আকর্ষণীয় অ্যালগরিদম (বা প্রোগ্রাম)

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

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

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

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

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

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

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

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

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

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

21000

কি প্রোগ্রাম আকর্ষণীয়

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

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

এটি সম্ভবত বেশিরভাগ "এলোমেলোভাবে উত্পন্ন" প্রোগ্রামগুলি বাদ দেয়।

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

যাইহোক, এটা জানা যায় না সব প্রোগ্রাম, typeable হয় যেহেতু এটি পরিচিত হয় যে এই ধরনের বাস্তবায়ন কিছু ল্যামডা অভিব্যক্তি, ওয়াই combinator , একটি শব্দ টাইপ সিস্টেমের মধ্যে টাইপ করা যাবে না

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

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


2
এটি ইস্যুটির সহজ দৃষ্টিভঙ্গি নয়, যদিও এটি মৌলিক। আমাকে ক্ষোভের সাথে সরল করতে হয়েছিল এবং আমার ভুল হতে পারে। তবে, যদি আপনি হ্রাস করতে চান তবে দয়া করে আমাকে কেন বলুন।
বাবু

হ্যাঁ, আমি নিশ্চিত নই যে নিম্নাঞ্চলের লোকেরা কী আছে।
ছদ্মনাম

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

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

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

0

লেখার সময় "অ্যালগরিদম" এর কোনও ভাল আনুষ্ঠানিক সংজ্ঞা নেই। তবে এতে স্মার্ট লোক কাজ করছে people

আমরা কী জানি যে "অ্যালগরিদম" যাই হোক না কেন এটি "গাণিতিক ফাংশন" এবং "কম্পিউটার প্রোগ্রাম" এর মধ্যে কোথাও বসে।

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

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

একইভাবে, অ্যালগরিদমের মধ্যে একটি সমতুল্য শ্রেণি রয়েছে, যেখানে দুটি অ্যালগরিদম সমান হয় যদি তারা একই গাণিতিক ফাংশনটি গণনা করে।

এই সমস্তর মধ্যে শক্ত অংশটি "মূলত একই জিনিস" দ্বারা আমরা কী বোঝাতে চাইছি তা ক্যাপচার করার চেষ্টা করছে।

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

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


1
অ্যালগরিদমের কোনও ভাল আনুষ্ঠানিক সংজ্ঞা নেই বলে আমি মনে করি এটি ন্যায়সঙ্গত বলে মনে করি না। প্রায় 100 বছর আগে এটি ছিল।
জুহো

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

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

-4

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

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


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