উচ্চতর আদেশ ক্রিয়াকলাপগুলি কার্যকরী প্রোগ্রামিংকে আরও শক্তি সরবরাহ করে?


13

আমি cstheory.SE তে একটি অনুরূপ প্রশ্ন জিজ্ঞাসা করেছি ।

স্ট্যাকওভারফ্লোতে এই উত্তর অনুসারে একটি অ্যালগরিদম রয়েছে যে অলস বিশুদ্ধ ফাংশনাল প্রোগ্রামিং ভাষার একটি জটিলতা রয়েছে, অন্যদিকে আবশ্যক প্রোগ্রামিংয়ে একই অ্যালগরিদম Ω ( n ) । এফপি ভাষায় অলসতা যুক্ত করা আলগোরিদিমকে Ω ( n ) তৈরি করেΩ(nlogn)Ω(n)Ω(n)

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


কোন এফপি ভাষা?
রিনিয়ারপোস্ট

উচ্চতর আদেশ ক্রিয়াকলাপ এবং অলস মূল্যায়ন একই নয়, আফাক। সুতরাং আপনার সম্পর্কে যা প্রশ্ন?
রাফেল

উত্তর:


11

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

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

উপসংহারে, এটি সত্যিই ভাষার উপর নির্ভর করে।


উপরে আমার উত্তর। নীচে, অপরিহার্য ভাষাগুলি সম্পর্কে একটি সাধারণ অনুমান সম্পর্কে একটি মন্তব্য।

Ω(nlogn)Ω(n)Ω(n)

nO(1)O(logn)O(logm)mmnmn

O(1)


4

এটি নির্ভর করে যা আপনি বোঝাতে চান তার উপর নির্ভর করে।

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

Ackermann 0=λx.x+1Ackermann (m+1)=Iter (Ackermann m)Iter f 0=f 1Iter f (n+1)=f (Iter f n)

এটি শুধুমাত্র আদিম পুনরাবৃত্তি ব্যবহার করে একারম্যান ফাংশনটি সংজ্ঞায়িত করে।

IterIterNkNkIter(NN)(NN)

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