লোগারিদমিক বনাম ডাবল লোগারিদমিক সময় জটিলতা


9

বাস্তব বিশ্বের অ্যাপ্লিকেশনগুলিতে পরিবর্তে অ্যালগরিদম ব্যবহার করার সময় কি কোনও কার্যকর সুবিধা পাওয়া যায় ?হে(লগ(লগ(এন))হে(লগ(এন))

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

প্রদত্ত যে আমি ব্যক্তিগতভাবে ভিইবি-গাছের চেয়ে বিএসটি পছন্দ করি, আপনি কী ভাবেন?

যে কেউ সহজেই তা প্রদর্শন করতে পারে:

n<106. lognlog(log(n))<5.26146


মূলত আপনার ইনপুটটির ছোট মান / আকারের জন্য অ্যালগরিদমে জড়িত ধ্রুবকগুলির দিকে নজর দেওয়া উচিত। আদর্শভাবে আমরা তাদের ছোট হতে চাই।
সিংহসুমিত

3
নোট করুন যে ভিইবি গাছের পর থেকে অনেকগুলি উন্নতি হয়েছে, অনুসন্ধান / সন্নিবেশ / জটিলতা মোছার সাথে র্যামের ডেটা স্ট্রাকচারের পরিমাণ amount O(log log n) এলোমেলোভাবে ছাড়াই (নির্ধারক) এবং হে(  এন)এলোমেলোভাবে। দেখুন এ নির্ণায়ক বাছাইকরণহে(এন   এন)সময় এবং লিনিয়ার স্পেস। হ্যান দ্বারা এবংহে(  এন)প্রত্যাশিত সময় এবং লিনিয়ার স্পেস। হান এবং থরুপ দ্বারা।
যেমন AT

বাস্তব বিশ্বে, 5 এর একটি ফ্যাক্টর বেশ তাত্পর্যপূর্ণ এবং আইটেমের সংখ্যা প্রায়শই 10 ^ 9 বা এমনকি 10 ^ 12 হতে পারে।
আরবেরি ইয়ং

উত্তর:


10

যে ভুলবেন না লগএন এখনও তাত্পর্যপূর্ণভাবে বৃদ্ধি পায় (ইন মধ্যে) লগ(এন)) তুলনায় দ্রুততর লগ(লগএন)!

আসলে, আপনি যদি ভাগফল তাকান লগ(এন) এবং লগ(লগ(এন)), দেখতে খুব চিত্তাকর্ষক নেই:

লগ (ঢ) / লগ (লগ (ঢ))
[ উত্স ]

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

তদ্ব্যতীত, ডেভ যা উল্লেখ করেছেন তা গুরুত্বপূর্ণ: যদি ক্রিয়াকলাপটি এভাবেই চালিত হয় তবে বলুন, নিয়মিত প্রায়শই, ধ্রুবক স্পিডআপগুলি লিনিয়ার স্পিডআপ হয়ে যায়, অর্থাৎ আপনি আপনার পুরো অ্যালগরিদমের অগ্রণী ধ্রুবক হ্রাস করতে পারেন! আমি উপরে বলেছি যে দুর্দান্ত। আপনি যদি অপারেশন চালান তবে কী ঘটে তা দেখুনএন সময়:

n * যেসব লগ (ঢ) / (ঢ * লগ (লগ (ঢ)))
[ উত্স ]

এখন যদি সমস্যাটি না হয় তবে আমি জানি না।


6

কেউ ভাবতে পারেন যে জটিলতার পার্থক্যটি আসলে এতটা গুরুত্বপূর্ণ নয় এবং আসল রানটাইম আরও গুরুত্বপূর্ণ। তবে যদি অ্যালগরিদম অন্য অ্যালগরিদমের মূল দিকে থাকে তবে এই পার্থক্যটি গুরুত্বপূর্ণ হতে পারে।

একটি খাঁটি তাত্ত্বিক উদ্দেশ্য থেকে, অবশ্যই পার্থক্যটি গুরুত্বপূর্ণ, বিশেষত যদি অ্যালগরিদম অন্যর একটি অংশ। এটি বৃহত্তর অ্যালগরিদমকে একটি ভিন্ন জটিলতা শ্রেণিতে ফেলতে পারে।


6

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

পরীক্ষাগুলি sizeবিরতিতে এলোমেলো সংখ্যার সাথে সন্নিবেশগুলি সম্পাদন করে [0, bound], তারপরে sizeঅনুসন্ধান করে, তারপরে sizeমুছে ফেলা হয় এবং তারপরে আবার sizeঅনুসন্ধান করে। মুছে ফেলা এলোমেলো সংখ্যায়ও করা হয়, সুতরাং আপনাকে প্রথমে এটি নির্ধারণ করতে হবে যে তারা কাঠামোটি আদৌ আছে কিনা।

এখানে ফলাফলগুলি ( size= 2000000, bound= 10000000) সেকেন্ডে রয়েছে:

AATreeLookup - O(n log n)
Inserting... 3.3652452
Searching... 5.2280724
Deleting...  7.3457427
Searching... 9.1462039
HashLookup - O(n) expected
Inserting... 0.3369505
Searching... 0.6223035
Deleting...  0.9062163
Searching... 1.1718223
VanEmdeBoasTree - O(n log log n)
Inserting... 0.7007531
Searching... 1.1775800
Deleting...  1.7257065
Searching... 2.2147703
ArrayLookup - O(n)
Inserting... 0.0681897
Searching... 0.1720300
Deleting...  0.2387776
Searching... 0.3413800

আপনি দেখতে পাচ্ছেন, ভ্যান এমডে-বোস গাছ হ্যাশ মানচিত্রের চেয়ে দ্বিগুণ ধীর, বিট অ্যারেগুলির চেয়ে দশগুণ ধীর এবং বাইনারি অনুসন্ধান গাছের চেয়ে পাঁচগুণ দ্রুত।

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

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

এখন, ক্ষেত্রে লগএন বনাম লগলগএন: উপরের উদাহরণে, আমার ভ্যান এমডে-বোস গাছ ধারণ করতে সক্ষম 232 উপাদান। লগ232=32, এবং লগ32=5, যা একটি ফ্যাক্টর 6 উন্নতি, যা অনুশীলনে বেশ খানিকটা কম। অতিরিক্তভাবে, ভ্যান এমডে-বোস গাছগুলিতে ভাল ধ্রুবক কারণ রয়েছে (এটি ছোট ছোট পার্থক্যের জন্য অনুশীলনে ধ্রুবক কারণগুলির মধ্যে রয়েছে) কারণ তাদের নিজেদের ভারসাম্য বজায় রাখার দরকার নেই।


সম্ভবত আর (বা সমমানের) এ লাফিয়ে কিছু সুন্দর গ্রাফ তৈরি করে (যেমন @ রাফেল করেছে) hael
ডেভ ক্লার্ক

1
আপনি যদি এই অ্যালগরিদমগুলি ধারণার সাথে সম্পর্কিত করেন তবে এটি আপনার উত্তরকে উন্নত করবে লগএন এবং লগলগএন
ডেভ ক্লার্ক

@ ডেভ ক্লার্ক: পরামর্শের জন্য ধন্যবাদ। দুর্ভাগ্যক্রমে, আমি সুন্দর ছবি উত্পাদন করতে বেশ খারাপ - আমার ধারণা আমার সম্পাদনা আমার ফলাফলের পাঠযোগ্যতার উন্নতি করেছে।
অ্যালেক্স দশ ব্রিংক

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