কোলাটজ পুনরাবৃত্তি কতক্ষণ চলবে?


19

আমার নীচের পাইথন কোড রয়েছে।

def collatz(n):
    if n <= 1:
        return True
    elif (n%2==0):
        return collatz(n/2)
    else:
        return collatz(3*n+1)

এই অ্যালগরিদমের চলমান সময়টি কী?

চেষ্টা করুন:

যদি ফাংশনের চলমান সময়কে বোঝায় । তারপরে আমি মনে করি I I have { টি ( এন ) = 1  জন্য  এন 1 টি ( এন ) = টি ( এন / 2 )  জন্য  এন  এমনকি টি ( এন ) = টি ( 3 এন + + 1 )  জন্য  এন  বিজোড়T(n)collatz(n)

{T(n)=1 for n1T(n)=T(n/2) for n evenT(n)=T(3n+1) for n odd

আমি মনে করি হতে হবে যদি এমনকি কিন্তু কিভাবে সাধারণভাবে পুনরাবৃত্তি গণনা করতে হয়?lg এন এনT(n)lgnn


4
এটি টি ( এন ) = টি ( এন ) হওয়া উচিতএবং আরও। +1 গুরুত্বপূর্ণ, অন্যথায় আপনার কাছেটি(এন)=1 রয়েছে, সমস্তএন এরজন্য ক্রমটি শেষ হয়। T(n)=T(n2)+1T(n)=1n
ব্যবহারকারী 253751


এটি কি ধরে নেওয়া হয় যে ব্যবহারকারী কেবলমাত্র পূর্ণসংখ্যা ইনপুট করবেন?
ডিন ম্যাকগ্রিগোর

পুনঃটুইট আসলে, একটি ধনাত্মক পূর্ণসংখ্যা ধরে নেওয়া হয়।
ডাস্কউফ

আরও বি কেজি বিস্তারিত সহায়ক হবে। আপনি কোডটি কোথায় পেয়েছেন, এটির সাথে আপনার পরিচয় কীভাবে হয়েছিল? এটি সংখ্যা তত্ত্বের এক শতাধিক উন্মুক্ত সমস্যা ~ ¾ শতাব্দীর জন্য অমীমাংসিত, যার ভিত্তিতে লগারিয়াসের একটি সম্পূর্ণ বই রচিত হয়েছে। সিএস pov থেকে প্রমাণিত যে এটি যে কোনও সময় বা স্থান জটিলতার শ্রেণি প্রমাণের সমান। আরও অনেক রেফারেন্স এখানে । আগ্রহী যে কারও জন্য কম্পিউটার সায়েন্স চ্যাটের দুর্দান্ত একটি বিষয় । ম্যাথওভারফ্লো ইত্যাদির collatzউপর একটি ট্যাগও রয়েছে latest সর্বশেষ গবেষণাগুলি দেখায় যে সমস্যাটিতে আন্তঃখণ্ডিত গুণাগুণ রয়েছে it
vzn

উত্তর:


29



ধন্যবাদ। তবে আমার পুনরাবৃত্তি সত্য? যদি তাই হয়, তবে আমরা এখনও সেই পুনরাবৃত্তির সমাধান খুঁজে পাই না?
9bi7

T(n)

T(n)=2T(n/2)+O(n)

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

7

15

আপনি কোডটি সঠিকভাবে অনুবাদ করেছেন । আছে পুনরাবৃত্তি সমাধানের জন্য অনেক পদ্ধতি

যাইহোক, এটি এখনও অজানা যদি collatzএমনকি সকলের জন্য বন্ধ হয় n; এটি দাবী করে যে এটি কোলাটজ অনুমান হিসাবে পরিচিত । অতএব, কোন পরিচিত পদ্ধতি এই পুনরাবৃত্তির উপর কাজ করবে না।

T(n)lgnn

n=2kΘ


13

সময় জটিলতা ফাংশন হয়

{T(n)=O(1) for n1T(n)=T(n/2)+O(1) for n evenT(n)=T(3n+1)+O(1) for n odd

যদি আপনি অ্যাসিপটোটিক সময়ের জটিলতায় আগ্রহী হন তবে নিম্নলিখিত হিসাবে যা আবার লিখতে পারে।

{T(n)=1 for n1T(n)=T(n/2)+1 for n evenT(n)=T(3n+1)+1 for n odd

M,1nHaltnn

কোলাটজ অনুমান একটি খুব বিখ্যাত অনুমান যা কোলাটজ ১৯৩37 সালে প্রস্তাব করেছিলেন। অনেক বিশিষ্ট গণিতবিদ এই অনুমানটি সমাধানের চেষ্টা করতে গিয়ে অগণিত সময় ব্যয় করেছেন (অপ্রয়োজনীয়) তবে খুব একটা উপকার করতে পারেন নি। এমনকি পল এরদেস কোলাটজ অনুমান সম্পর্কে বলেছিলেন, "গণিত এ জাতীয় সমস্যার জন্য এখনও প্রস্তুত নয়।"


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

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

3x+1

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

2

noddn3n+1

T(n)=2T(n/2)+nT(0)T(1)

3n+1


0

আপনার টি (এন) = টি (এন / 2) + 1 যদি n হয় তবে। তবে এন / 2 সম্ভবত বেশিরভাগ ক্ষেত্রেও না, তাই আপনি সেখানে আটকে আছেন।

যা ঘটে তা হ'ল আপনি যে দুর্দান্ত ছোট্ট নিয়ম শিখেছেন তা একটি বাস্তব সমস্যার মুখোমুখি হয় এবং সেগুলি কার্যকর হয় না। তারা প্রথমে একটি ইটের প্রাচীর আঘাত করে, আঘাত করে ts নিজেই অনুগ্রহ করুন এবং ম্যানুয়ালি টি (7) এর পুনরাবৃত্তি অনুসরণ করুন এবং তারপরে আপনি যদি বলেন যে আপনি এখনও বিশ্বাস করেন এটি সম্পর্কিত lg n।

যদি আপনি মনে করেন যে এটি মূল প্রশ্নের সাথে সম্পর্কিত নয় কারণ 7 টি এমনকি নয়: যখনই n বিজোড় হয়, টি (এন) = টি (3 এন + 1), এবং 3n + 1 সমান হয়, তাই যদি টি (এন) লগ হত n যদি n হয় তবে এটি লগ হবে (3n + 1) + 1 যখনই n> 1 টি বিজোড় হয়।

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