কোলমোগোরভ-জটিল সংজ্ঞাগুলির সমতা


20

কোলমোগোরভ-জটিলতা সংজ্ঞায়নের অনেকগুলি উপায় রয়েছে এবং সাধারণত, এই সমস্ত সংজ্ঞাগুলি একটি সংযোজক ধ্রুবকের সমতুল্য। এটি যদি কে 1K1 এবং কে 2K2 কোলমোগোরভ জটিলতা ফাংশন (বিভিন্ন ভাষা বা মডেলের মাধ্যমে সংজ্ঞায়িত) হয়, তবে সেখানে একটি ধ্রুবক সি থাকে cযা প্রতিটি স্ট্রিংয়ের জন্য xx , | কে 1 ( এক্স ) - কে 2 ( এক্স ) | < |K1(x)K2(x)|<c । আমি বিশ্বাস করি এটি কারণ প্রতিটি কলমোগরভ জটিলতার ফাংশন কেK এবং প্রতিটি এক্সের জন্যx এটি ধারণ করেকে ( এক্স ) | এক্স | + + K(x)|x|+c , কিছু ধ্রুবক জন্যc

টুরিং-মেশিনের উপর ভিত্তি করে আমি কে এর জন্য নিম্নলিখিত সংজ্ঞাগুলিতে আগ্রহীK

  1. রাজ্যের সংখ্যা : কে 1 ( x ) কেK1(x) ন্যূনতম সংখ্যা q হিসাবে সংজ্ঞায়িত করুন qযে কোনও q এর সাথে একটি টিএম শূন্য স্ট্রিংয়ে এক্সq আউটপুট দেয় ।x
  2. প্রোগ্রাম দৈর্ঘ্য : define কে 2 ( x এর )K2(x) সবচেয়ে কম "কর্মসূচির" হতে যে আউটপুট xx । যথা, বাইনারি স্ট্রিংগুলিতে টিএমএস এনকোড করার একটি উপায় ঠিক করুন; একটি মেশিনের জন্য এমM তার অবস্থান (বাইনারি) বোঝাতে যেমন এনকোডিং এম Mকে 2 ( এক্স ) = মিনিট | এম | K2(x)=min|M|যেখানে সর্বনিম্ন সমস্ত চেয়ে বেশি হয় খালি ইনপুটটিতে আউটপুট ।এম এক্সMx

হয় কে 1K1 এবং কে 2K2 সমতুল্য? তাদের মধ্যে কী সম্পর্ক, এবং কোনটি কলমোগোরভ জটিলতার ধারণাটিকে আরও ভালভাবে গ্রহণ করে, যদি তারা সমতুল্য না হয়।

কি বিশেষত বাগ আমাকে হার কে 2K2 সঙ্গে বৃদ্ধি এক্সx , যা সুপার-রৈখিক হতে বলে মনে হয় (অথবা ধ্রুবক সঙ্গে অন্তত রৈখিক এ সি > 1C>1 যেমন যে কে 2 < সি | এক্স |কে2< সি| এক্স | বদলে | এক্স | + + | এক্স | + )। সবচেয়ে সহজ টি এম বিবেচনা করুন যে আউটপুট এক্সএক্স - একটি যে শুধু এনকোড এক্সএক্স তার রাজ্য এবং ট্রানজিশন ফাংশন অংশ হিসেবে। এটি দেখতে অবিলম্বে যে কে 1 ( এক্স ) | এক্স | + 1কে1( এক্স ) | এক্স | + 1। তবে একই মেশিনের এনকোডিংটি অনেক বড় এবং তুচ্ছ বাউন্ড আমি পেয়েছি কে 2 ( এক্স ) | এক্স | লগ | এক্স | কে2( এক্স ) | এক্স | লগ| এক্স |


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

1
কে 2 ( x ) c + 2 | এর একটি সুপরিচিত আবদ্ধ রয়েছে এক্স | এক্স উপর নির্ভর করে কিছু স্থির সি জন্য । এর কারণ আমরা পারি সঙ্কেতাক্ষরে লিখা এক্স শুধু প্রতিটি বিট দ্বিগুন দ্বারা একটি উপসর্গ মুক্ত ভাষা এক্স এবং তারপর দিয়ে শেষ 01 । এটি লাগে 2 | এক্স | + + 2 বিট প্রতিনিধিত্ব করতে এক্স । সুতরাং, কারণ কে 2 সার্বজনীন উপসর্গমুক্ত মেশিনের ক্ষেত্রে সংজ্ঞায়িত হয়েছে, কে 2 ( এক্স )কে2(x)c+2|x|cxxx012|x|+2xK22 | এক্স | + + 2 + + ' কিছু সংশোধন করা হয়েছে জন্য । এটিকেপ্রিফিক্স মুক্ত ভাষায় এক্স এনকোড করার আরও বুদ্ধিমান উপায় ব্যবহার করে কিছু উন্নত করা যেতে পারে। K2(x)2|x|+2+ccx
কার্ল ম্যামার্ট

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

@Ran জি .: কী বিন্দু invariance উপপাদ্য এ বর্ণিত হয় en.wikipedia.org/wiki/Invariance_theorem । আমি কোনো কার্যকর ব্যবস্থার একটি বৃদ্ধির হার আছে যা বর্ণনা করতে পারেন 2 | এক্স | তারপরে একটি সার্বজনীন ট্যুরিং মেশিন (আপনি যেমন কে 2 হিসাবে বর্ণনা করেছেন ) এটি একটি সংযোজক ধ্রুবকের মধ্যে মিলবে। সার্বজনীন মেশিন এক যে লাগে এম ইনপুট এবং আয় আউটপুট হয় এম যদি এম বন্ধ হয়ে যাবে। 2|x|K2MMM
কার্ল ম্যামার্ট

উত্তর:


6

আমি আগে থেকে ক্ষমা চেয়ে নিচ্ছি এর জন্য আমি অনেক বেশি বিবরণ দিচ্ছি, তবে আমি লোকদের সাথে বিরোধিতা করতে চলেছি।

কে ( এক্স ) সম্পর্কে কে ( এক্স ) + K(x)K(x)+c

সত্য যে কে 1 ( এক্স ) কে 2 ( x এর ) + + সাধারণত একটি থেকে আসে অনুবাদক বিবরণ ভাষা # 1 এবং মধ্যে বিবরণ ভাষা # 2 না # 1 এর প্রোগ্রাম মধ্যে # 2 প্রোগ্রাম থেকে একটি অনুবাদ থেকে।K1(x)K2(x)+c

উদাহরণস্বরূপ কে সি ( এক্স ) কে পি ওয়াই টি এন ( এক্স ) + সি পি ওয়াই 2 সি এবং আপনি এই বৈষম্যটি কেবল এই হিসাবে পান:KC(x)KPython(x)+cpy2c

void py_run(char * s) {
    // code of your Python interpreter
}

int main(void) {
    py_run("Put here your Python program of size Kpython(x)");
}

তারপর আপনার ধ্রুবক পি Y 2 ভালো কিছু হতে হবে 528 + + 490240688 যেখানে 528 এই কোডটি বিট এবং সংখ্যা 490240688 বিট আকার কর্মকর্তা পাইথন ইন্টারপ্রেটার সি তে লেখা অবশ্যই আপনি শুধুমাত্র ব্যাখ্যা করা কি সম্ভব হয় প্রয়োজন পাইথনের জন্য আপনার বর্ণনার ভাষা যাতে আপনি 69 এমবি থেকে ভাল করতে পারেন :-)cpy2c528+490240688528490240688

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

আপনার কে 1 ( x ) = q ত্রুটিযুক্তK1(x)=q

কে 1 এর আপনার সংজ্ঞায় সমস্যাটি হ'ল কিউ স্টেটস সহ একটি ট্যুরিং মেশিন বর্ণনা করতে আপনাকে q বিটের বেশি প্রয়োজন হতে পারে কারণ আপনাকে ট্রানজিশনগুলি এনকোড করতে হবে।K1qq

সুতরাং কোনও কে 1 এবং কে 2 সম্ভবত সমতুল্য নয়, তবে এটি মূলত কে 1 এর দোষ। আমি মনে করি আমরা সবার জন্য প্রমাণ করতে পারেন যে একটি > 0 সেখানে হয় একটি যেমন যে কে 1 ( এক্স ) একটি | এক্স | + a । অবশ্যই কোন একটি < 1 সত্য খণ্ডন যে যথেষ্ট কে 1 , যেহেতু এটি অর্থ হবে যে আমরা আরো সব এনকোড করতে একটি বৈধ ফাংশন নয় 2 এন দৈর্ঘ্য সম্ভাব্য স্ট্রিংK1K2K1a>0caK1(x)a|x|+caa<1K12nএন মধ্যে একটি এন + + একটি বিট।nan+ca

টুরিং মেশিনগুলি তৈরি করার সময় আকারটি অবিশ্বাস্যভাবে শক্ত tight ধারণা যে একটি ব্লক রয়েছে আছে যুক্তরাষ্ট্রের 2 উপায়ে প্রতিটি রাষ্ট্রের জন্য ট্রানজিশন খুঁজে পেতে এবং যে স্বাভাবিকের চেয়ে ভালো 2 উপায়ে আপনি পূরণ করতে পারেন বিট। তারপর আপনি প্রতিটি ব্লক সঞ্চয় করতে পারে লগ 2 তথ্য বিট। ( 2 লগ 2 বি নয় কারণ আপনাকে একরকম বা অন্য কোনও পথে ব্লকটি প্রবেশ করতে হবে)bb2b2bblog2b2log2b

So yeah... With blocks of size 21/a21/a you could probably prove K1(x)a|x|+caK1(x)a|x|+ca. But I already written way too much about why the number of states is not a valid Kolmogorov complexity function. If you want me to elaborate, I will.

Now about K2K2

The naive descriptive language corresponds roughly to K2(x)=q2(log2q+2)K2(x)=q2(log2q+2) (i.e. log2qlog2q for each next state and details about write and termination).

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

However if you keep the same K2K2 you could use the same technique I used in the previous part to save a few bits, but I seem to be stuck at K2(x)a|x|log|x|+c (for any a>0) .. maybe less than log|x|, even, but obtaining O(|x|) seems hard. (And I expect it should be |x|, not even O(|x|).)


do you claim that K1 is not a kolmogorov-complexity function? This is very surprising to me, since K1 is actually the definition used in some intoduction to computability course I've once taken (not that it says anything about its correctness).
Ran G.

Well the fact that K1(x)12|x|+c is quite disturbing. Consider this: there are 2n possible words of n bits and you could encode them using a 12n+c bits? That would imply 2n=O(212n) (you encoding has to be injective)
jmad

What if the python program has characters reserved by C?
PyRulez
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.