কবে আমি প্রিমের বিপরীতে (এবং তদ্বিপরীত) ক্রুসকল ব্যবহার করব?


192

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

উত্তর:


199

প্রাইমের অ্যালগরিদম ব্যবহার করুন যখন আপনার প্রচুর প্রান্তের একটি গ্রাফ থাকে।

সঙ্গে একটি গ্রাফের জন্য ভী ছেদচিহ্ন প্রান্ত, Kruskal এর অ্যালগরিদম রান হে (ই লগ v) সময় এবং পরিপাটি এর এলগরিদম চালানো যেতে পারে হে (ই + + ভী লগ v) সময় amortized, যদি আপনি একটি ব্যবহার ফিবানচি গাদা

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


8
আমি গড়ের পরিবর্তে "সাধারণ পরিস্থিতি" বলব .. আমি মনে করি এটি ব্যবহার করার জন্য এটি একটি অস্পষ্ট শব্দ, উদাহরণস্বরূপ হ্যাশ টেবিলের "গড় আকার" কী? কোন ধারনা নাই.
ইয়ারছু

2
@ স্প্লিটিংফিল্ড: আমি বিশ্বাস করি আপনি আপেল এবং কমলা তুলনা করছেন। ইমোরটাইজড বিশ্লেষণটি ফাংশনটির পরিমাপ করার সহজ উপায় (যাতে কথা বলা যায়) --- এটি সবচেয়ে খারাপ পরিস্থিতি বা গড় ক্ষেত্রে আপনি যা প্রমাণ করছেন তার উপর নির্ভরশীল। প্রকৃতপক্ষে (আমি এখন এটি সন্ধান করি), উইকি নিবন্ধটি এমন ভাষা ব্যবহার করে যা বোঝায় যে এটি কেবলমাত্র সবচেয়ে খারাপ ক্ষেত্রে বিশ্লেষণের জন্য ব্যবহৃত হয়েছিল। এখন, এই জাতীয় বিশ্লেষণ ব্যবহারের অর্থ হ'ল আপনি কোনও নির্দিষ্ট ক্রিয়াকলাপের ব্যয় সম্পর্কে দৃ strong় প্রতিশ্রুতি দিতে পারবেন না, তবে অ্যালগরিদম হওয়ার সময় এটি ও (ই + ভ্লগভি) দ্বারা হবে, এমনকি সবচেয়ে খারাপ পরিস্থিতিও।
n

10
এটি তাত্ত্বিক হিসাবে ভাল বলে মনে হচ্ছে, তবে আমি বাজি রেখেছি যে খুব কম লোকই একটি ফিবোনাচি গাদা বাস্তবায়ন করতে পারে
আলেকজান্দ্রু

2
@ টিগামব্লিন, সবচেয়ে খারাপ ক্ষেত্রে সি (ভি, ২) প্রান্ত থাকতে পারে। সুতরাং, ফাইবোনাকির গাদা ক্ষেত্রে প্রাইমের অ্যালগরিদমের সময় সম্পূর্ণভাবে ও (ভ ^ 2 + ভ্লগভি) অর্থাৎ ও (ভি ^ 2) এর মধ্যে ফুটে যায় না?
সবুজ গব্লিন

7
আরও একটি গুরুত্বপূর্ণ বিষয় রয়েছে: গ্রাফটি সংযুক্ত থাকলেই প্রাইমের আউটপুট একটি এমএসটি হয় (আউটপুট অন্যথায় আমার কোনও ব্যবহারের মতো বলে মনে হয় না), তবে ক্রুষলের আউটপুটটি ন্যূনতম স্প্যানিং অরণ্য (কিছু ব্যবহার সহ) is
আন্দ্রেআই আমি

100

আমি নেটে একটি খুব সুন্দর থ্রেড পেয়েছি যা খুব সহজভাবে পার্থক্যটি ব্যাখ্যা করে: http://www.thestudentroom.co.uk/showthread.php?t=232168

ক্রসকলের অ্যালগরিদম পরবর্তী প্রান্তটি যুক্ত করে সস্তারতম প্রান্ত থেকে সমাধান বাড়িয়ে দেবে, তবে শর্ত থাকে যে এটি একটি চক্র তৈরি করে না।

প্রাইমের অ্যালগরিদম পরবর্তী সস্তায় শীর্ষস্থানটি যুক্ত করে একটি র্যান্ডম প্রান্তিকের থেকে একটি সমাধান বাড়িয়ে তুলবে, যেটি ভার্টেক্সটি বর্তমানে সমাধানে নেই তবে এটি সর্বাধিক প্রান্ত দ্বারা যুক্ত করা হয়েছে।

এখানে সংযুক্ত সেই বিষয়টির একটি আকর্ষণীয় শীট রয়েছে।এখানে চিত্র বর্ণনা লিখুনএখানে চিত্র বর্ণনা লিখুন

আপনি যদি ক্রুসকল এবং প্রাইম উভয়কেই তাদের সর্বোত্তম আকারে প্রয়োগ করেন: একটি ইউনিয়ন অনুসন্ধান এবং একটি ফিনবোনাকির স্তূপ সহ যথাক্রমে, তবে আপনি লক্ষ করবেন যে প্রিমের তুলনায় ক্রুসকল কীভাবে কার্যকর করা সহজ।

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


2
নিতপিক: প্রত্যেকের সর্বশেষ 'স্লাইড' পড়তে হবে "আপনার বিস্তৃত গাছ না হওয়া পর্যন্ত পুনরাবৃত্তি"; এমএসটি না হওয়া অবধি, যা পুনরাবৃত্তিমূলক কোনও কাজ - আমি কীভাবে জানি যে এটি ন্যূনতম - এজন্যই আমি প্রাইম / ক্রুসকলকে অনুসরণ করে অনুসরণ করছি!
ওজেফোর্ড

@ অলিফোর্ড আমি প্রাইম এবং কুষকল অ্যালগরিদমের একটি সাধারণ চিত্র অনুসন্ধান করার জন্য এই থ্রেডটি পেয়েছি। অ্যালগরিদমগুলি গ্যারান্টি দেয় যে আপনি একটি গাছ পাবেন এবং সেই গাছটি একটি এমএসটি। এবং আপনি জানেন যে আপনি যখন ঠিক V-1 কিনারা পেয়েছেন তখন একটি গাছ পেয়েছেন ।
মাইকেডু 95

@ মাইকেডু 95 আপনি ঠিক বলেছেন, অন্য কোণ থেকে আমার আগের মন্তব্যের মত একই পয়েন্টটি তৈরি করে।
ওজেফোর্ড

তবে এটি পূর্ব শর্ত নয় যে আপনাকে কেবল শীর্ষকোষের মধ্যে একক ওজন দিয়ে বেছে নিতে হবে, উপরের গ্রাফ থেকে আপনি একবারের চেয়ে ওজন 2 বেছে নিতে পারবেন না, আপনাকে পরবর্তী ওজন বেছে নিতে হবে যেমন: 3 @ স্নিকোলাস
ani0904071

30

আমি জানি যে আপনি এর জন্য জিজ্ঞাসা করেননি, তবে আপনার যদি আরও প্রসেসিং ইউনিট থাকে তবে আপনার সর্বদা বোরভভাকের অ্যালগরিদম বিবেচনা করা উচিত , কারণ এটি সহজেই সমান্তরাল হয়ে উঠতে পারে - সুতরাং এটি ক্রুসকল এবং জারনেক-প্রাইম অ্যালগরিদমের চেয়ে পারফরম্যান্স সুবিধা অর্জন করতে পারে।


23

প্রান্তগুলি লিনিয়ার সময়ে বাছাই করা যায়, বা ইতিমধ্যে বাছাই করা থাকলে ক্রুসকলের আরও ভাল পারফরম্যান্স থাকতে পারে।

প্রাইমটি আরও ভাল যদি শীর্ষে প্রান্তের সংখ্যা বেশি হয়।


19

কুষ্কাল সময়ের জটিলতার সবচেয়ে খারাপ অবস্থা হ'ল (ই লগ ই) , কারণ আমাদের প্রান্তগুলি বাছাই করতে হবে। প্রাইম টাইম জটিলতার সবচেয়ে খারাপ পরিস্থিতি হ'ল O (E লগ ভি) এর সাথে অগ্রাধিকারের সারি বা আরও ভাল, O (E + V লগ ভি) সহ ফাইবোনাচি হিপ । যখন গ্রাফ বিচ্ছিন্ন হয় তখন E = O (V) এর মতো ছোট সংখ্যক প্রান্তগুলি ব্যবহার করা উচিত, যখন প্রান্তগুলি ইতিমধ্যে বাছাই করা হয় বা যদি আমরা লিনিয়ার সময়ে বাছাই করতে পারি। E = O (V²) এর মতো গ্রাফটি ঘন হওয়ার সময়, যেমন প্রান্তের সংখ্যা বেশি হলে আমাদের প্রাইম ব্যবহার করা উচিত।


আমার কাছে দেখে মনে হচ্ছে যে প্রাইম কখনই কৃসকলের গতির চেয়ে খারাপ নয়। যেহেতু ই কমপক্ষে ভি -1 হওয়া উচিত সেখানে একটি বিস্তৃত গাছ রয়েছে। আমি মনে করি যে আমরা কৃপলকে অপ্রয়োজনীয় গ্রাফের জন্য পছন্দ করতে পারি তার ডেটা কাঠামোটি সহজ সরল।
ইউ গু

16

আমরা যদি মাঝারি প্রাইমের আলগোরিদিমটিতে অ্যালগরিদম বন্ধ করে রাখি তবে সর্বদা সংযুক্ত গাছ উত্পন্ন করে, তবে অন্যদিকে কৃসকল বিচ্ছিন্ন গাছ বা বন দিতে পারে


5

কৃসকলের অ্যালগরিদমের একটি গুরুত্বপূর্ণ প্রয়োগ হ'ল একক লিঙ্ক ক্লাস্টারিংয়ে

N টির উপরের অংশটি বিবেচনা করুন এবং আপনার একটি সম্পূর্ণ গ্রাফ রয়েছে those এই এন পয়েন্টগুলির আক ক্লাস্টারগুলি অর্জন করতে K ক্রসকলের অ্যালগোরিদমকে প্রথম এন- (কে -1) প্রান্তের সাজানো সেটগুলির উপরে প্রস্থান করুন You আপনি গ্রাফের কে-ক্লাস্টার সর্বাধিক সহ প্রাপ্ত করুন ব্যবধান।


3

কৃসকলের জন্য সেরা সময় হ'ল ও (ই লগভি)। প্রাইমের ফাইব হ্যাপ ব্যবহারের জন্য আমরা ও (ই + ভি এলজিভি) পেতে পারি। অতএব ঘন গ্রাফে, প্রাইমগুলি আরও ভাল।


2

প্রাইমগুলি আরও ঘন গ্রাফের জন্য আরও ভাল এবং এর মধ্যে আমাদের প্রাথমিকভাবে নোডগুলির সাথে কাজ করার কারণে একটি প্রান্ত যুক্ত করে চক্রের দিকে খুব বেশি মনোযোগ দিতে হবে না। জটিল গ্রাফের ক্ষেত্রে প্রাইম ক্রুসকলের চেয়ে দ্রুত।


2

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

এই মত গ্রাফ _____________ | | | | | | | __________ | | যে কোনও প্রান্তকে a, b, c, d, e, f এর নাম দিন।

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