ফ্ল্যাট এক্সপ্রেশনগুলির জন্য সহজতম সংমিশ্রণ ভিত্তি জুটি


9

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

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

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

কোন সহজ অপারেটরের প্রয়োজন হয় না এমন সহজতম সংমিশ্রণ ভিত্তি জোড়াটি কী?


1
প্রাসঙ্গিক কিনা তা নিশ্চিত নয় তবে: মনে রাখবেন যে ল্যাম্বডা ক্যালকুলাসের বেসগুলি একক পদ দ্বারা গঠিত । এটি গডেল সংখ্যাটিকে আরও সহজ করে তুলেছে। cs.uu.nl/research/techreps/repo/CS-1989/1989-14.pdf
চি

উত্তর:


2

প্রায় এক বছর পরে এটিতে ফিরে এসে আমি বুঝতে পেরেছিলাম যে আমি পোস্টের আগে কিছু সমালোচনামূলক গবেষণা মিস করেছি।

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

আমি পাইথনের সাহায্যে তার রেফারেন্স বাস্তবায়নকে সহজ করেছি:

def S(x): return lambda y: lambda z: x(z)(y(z))
def K(x): return lambda y: x
def X(x): return x(S)(K)
def B(x): return lambda y: lambda z: x(y(z))
def I(x): return x
def J(n): return (B if n & 1 else X)(J(n >> 1)) if n else I

জে (এন) প্রোগ্রামটি তার গোডেল নম্বর এন দ্বারা প্রতিনিধিত্ব করে চিহ্নিত করে বিল্ট আপ ফাংশনটি প্রদান করে।

বি (চার্চ এনকোডেড বহুবৃত্তের সমতুল্য) কার্যকরী অ্যাপ্লিকেশন (প্রথম বন্ধনী) এর কার্যকারিতা সরবরাহ করে এবং একক ভিত্তিতে আইওটা সংযুক্তকারী এক্স এর এস / কে অর্ধেকগুলি পৃথক করতে পারে।

এই ভাষার কয়েকটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা আমি (প্রায়) নির্লজ্জভাবে ভাষাটির উদ্ভাবক ক্রিস বারকারের ওয়েবসাইট থেকে চুরি করছি, প্রায় 2000।

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

ট্যুরিং-সম্পূর্ণতার প্রমাণটি ক্রিসের সাইট থেকেও এসেছে, এস এবং কে সংযুক্তকারীগুলি ব্যবহার করে ইতিমধ্যে পরিচিত টুরিং-সম্পূর্ণ সংযুক্ত যুক্তি প্রয়োগ করে:

K  ==> 11100
S  ==> 11111000
AB ==> 1[A][B], where A & B are arbitrary CL combinators built up from K & S

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

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

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

জন ট্রম্পের বাইনারি ল্যাম্বদা ক্যালকুলাসের সাথে আকর্ষণীয় কিছু তুলনা করার জন্য, যা এটি সংক্ষিপ্ততার জন্য পরিচিত, তবে সম্ভাব্য বাক্য গঠন ত্রুটির সমস্যা রয়েছে does নিম্নলিখিত প্রোগ্রামগুলি আমার লার্নিং প্রোগ্রামটি কয়েক সেকেন্ডের মধ্যে তৈরি করেছিল।

Function    Jot       Binary Lambda Calculus   |J| |B|
--------|----------|--------------------------|---|---
SUCC      J(18400)  "000000011100101111011010" 15  24
CHURCH_0  J(154)    "000010"                    8   6
CHURCH_1  J(0)      "00000111010"               1  11
CHURCH_2  J(588826) "0000011100111010"         20  16
IS_ZERO   J(5)      "00010110000000100000110"   3  23
MUL       J(280)    "0000000111100111010"       9  19
EXP       J(18108)  "00000110110"              15  11
S         J(8)      "00000001011110100111010"   4  23
K         J(4)      "0000110"                   3   7
AND       J(16)     "0000010111010000010"       5  19
OR        J(9050)   "00000101110000011010"     14  20

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

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