নির্দেশিত ইউনিয়ন-সন্ধান করুন


11

একটি নির্দেশিত গ্রাফ বিবেচনা করুন যার উপরে কেউ প্রান্তিকভাবে প্রান্তগুলি যুক্ত করতে এবং কিছু নির্দিষ্ট প্রশ্ন তৈরি করতে পারে।জি

উদাহরণ: বিরক্তি-সেট বন

নিম্নলিখিত প্রশ্নের সেট বিবেচনা করুন:

arrow(u, v)
equiv(u, v)
find(u)

প্রথম এক একটি তীর যোগ গ্রাফ, যদি দ্বিতীয় সিদ্ধান্ত নেয় গত এক সমানতা বর্গ একটি ক্যানোনিকাল প্রতিনিধি খুঁজে বের করে , অর্থাত্ একটি যেমন যে অর্থ ।ইউ ভি আর ( ইউ ) ইউ ভি আর ( ভি ) = আর ( ইউ )তোমার দর্শন লগ করাবনামতোমার দর্শন লগ করা*বনাম*R(তোমার দর্শন লগ করা)তোমার দর্শন লগ করা*বনামR(বনাম)=R(তোমার দর্শন লগ করা)

অর্ধ-ধ্রুবক amorised জটিলতায় এই কোয়েরিগুলিকে বাস্তবায়নকারী বিশ্লেষণ-সেট বন তথ্য কাঠামো ব্যবহার করে একটি সুপরিচিত অ্যালগরিদম রয়েছে । নোট করুন যে এই ক্ষেত্রে ব্যবহার করে প্রয়োগ করা হয় ।হে(α(এন))equivfind

আরও জটিল রূপ

এখন আমি আরও জটিল সমস্যাটিতে আগ্রহী যেখানে দিকনির্দেশগুলি গুরুত্বপূর্ণ:

arrow(u, v)
confl(u, v)
find(u)

প্রথম একটি তীর যোগ সেকেন্ডের সিদ্ধান্ত নেয় যদি একটি নোড উভয় থেকে পৌঁছানো এবং , অর্থাত্ । একটি বস্তুর যেমন বোঝায় যেখানে সহজেই গণনাযোগ্য হয়। (বলতে গেলে, গণনা করা )। লক্ষ্যটি হ'ল একটি ভাল ডেটা কাঠামো সন্ধান করা যাতে এই ক্রিয়াকলাপগুলি দ্রুত হয়।ডব্লু ইউ ভি ইউ ভি আর ( ইউ ) আপনি ভি আর ( ইউ ) আর ( ভি ) তোমার দর্শন লগ করাবনামWতোমার দর্শন লগ করাবনামতোমার দর্শন লগ করা**বনামR(তোমার দর্শন লগ করা)তোমার দর্শন লগ করা**বনামR(তোমার দর্শন লগ করা)R(বনাম)confl

আবর্তক

গ্রাফটিতে চক্র থাকতে পারে।

আমি জানি না যে কেবলমাত্র প্রধান সমস্যার জন্য ডিএজিগুলিকে বিবেচনা করার জন্য, দৃ strongly়ভাবে সংযুক্ত উপাদানগুলি দক্ষ বর্ধমানভাবে গণনার কোনও উপায় আছে কিনা ।

অবশ্যই আমিও ডিএজিগুলির জন্য একটি সমাধানের প্রশংসা করব। এটি সর্বনিম্ন সাধারণ পূর্বপুরুষের বর্ধিত গণনার সাথে মিল রাখে।

নিষ্পাপ পদ্ধতির

বিভেদ-সেট বন তথ্য কাঠামো এখানে সহায়ক নয়, কারণ এটি প্রান্তের দিকটিকে অগ্রাহ্য করে। মনে রাখবেন যে একক নোড হতে পারে না, ক্ষেত্রে গ্রাফটি সমান নয়।R(তোমার দর্শন লগ করা)

এক বর্ণনা করতে পারেন এবং সংজ্ঞায়িত করতে হিসাবে যখন । তবে কীভাবে এটি বাড়ানো যায়?R(তোমার দর্শন লগ করা)={বনাম|তোমার দর্শন লগ করা*বনাম}এস1এস2এস1এস2

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

উত্তর:


3

( সম্পাদনা করুন : এখন আমার উত্তরটি সম্পূর্ণরূপে পুনরায় লিখুন যে সমস্যার বিষয়ে আমার বোঝাপড়াটি (আশা করি) আরও পরিষ্কার r)

মনে হচ্ছে গ্রাফটি নির্মিত এবং অনুসন্ধান করা হওয়ায় এই সমস্যাটি গ্রাফের ট্রানজিটিভ বন্ধের একটি আনুমানিক সংযোজন এবং ক্রমবর্ধমান উন্নত করতে হ্রাস করা যেতে পারে।

u v v u u , v u v u w v wR(তোমার দর্শন লগ করা) , বিমূর্তভাবে, সমস্ত নোডের সেট যা গ্রাফের প্রতিটি এর জন্য এবং উভয় থেকে পৌঁছনযোগ্য। (অবশ্যই, সমস্ত জোড়গুলির অগত্যা একটি নোড থাকবে যা তাদের উভয় থেকেই পৌঁছানো যায়) এমন নোড থাকতে পারে যা এবং উভয় থেকে এবং এবং উভয়ের কাছ থেকে , যা এবং উভয়ই পৌঁছনীয় নয় ।তোমার দর্শন লগ করাবনামবনামতোমার দর্শন লগ করাতোমার দর্শন লগ করা,বনামতোমার দর্শন লগ করাবনামতোমার দর্শন লগ করাWবনামW

আপনি বজায় রাখা, যে জন্য বলুন , নোড একটি সেট পৌঁছানো থেকে (আমি এই ডাকবো )। এই সেটগুলি প্রয়োজনীয় প্রতিটি নোডের জন্য অতিরিক্ত ডেটা কাঠামো বা কমপক্ষে গ্রাফের অতিরিক্ত "শর্টকাট" প্রান্তগুলির একটি সেট। আপনি যদি গ্রাফের নির্দিষ্ট কাঠামো ধরে রাখার বিষয়ে চিন্তা না করেন তবে এই প্রান্তগুলি এবং নির্দিষ্ট প্রান্তগুলির মধ্যে পার্থক্য করার প্রয়োজন হবে না।ইউ আর ( ইউ )তোমার দর্শন লগ করাতোমার দর্শন লগ করাআর(তোমার দর্শন লগ করা)

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

প্রতিবার আপনি থেকে অন্য কোনও নোড একটি প্রান্ত যুক্ত করুন , আপনি ।v R ( u ) = R ( u ) R ( v )তোমার দর্শন লগ করাবনামআর(তোমার দর্শন লগ করা)=আর(তোমার দর্শন লগ করা)আর(বনাম)

conflপ্রথমে করে প্রয়োগ করুন ; যদি তা খালি না হয় তবে সত্যে ফিরে আসুন। কিন্তু যদি হয় খালি, থেকে দুটি সমান্তরাল পানা প্রথম অনুসন্ধান করবেন এবং পর্যন্ত হয় আপনি উভয় পৌঁছানো সেট এক্সস্ট বা কমন একটি নোড খুঁজে। আপনি এই কাজ করতে যদিও, এছাড়াও আপডেট এবং (এবং 'সব অন্তর্বর্তী নোড আপনাকে খুঁজে এর গুলি) পৌঁছানো নোড সাহায্যে পাওয়া অন্তর্ভূক্ত করে নেয়। এবং যদি আপনি একটি নোড সাধারণ দেখতে পান তবে সেট করুন R (u) = R (v) = R (u) \ কাপ আর (ভি)আর(তোমার দর্শন লগ করা)আর(বনাম)আর(তোমার দর্শন লগ করা)আর(বনাম)আর(তোমার দর্শন লগ করা)আর(বনাম)আর

find(u)শুধু । সমস্যাটি হ'ল নিখুঁতভাবে প্রয়োগ করা হয় না । আমি দেখতে পাচ্ছি না কীভাবে সম্ভব হতে পারে যদি না অ্যালগরিদম অ-বর্ধনশীল না হয় (যেমন গ্রাফের ট্রান্সজিটিভ ক্লোজার সহ সমস্ত নোডের সমস্ত সেটগুলি পূর্বে গণনা করুন However) তবে, বর্ধনশীল পদ্ধতির আপনাকে এখনও মোটামুটি উত্তেজিত রূপ দেওয়া উচিত ব্যয়, যদিও এটি অফহ্যান্ডের কাছে পৌঁছলে আমার কোনও ধারণা নেই । (এটি সম্ভবত হয় না from এর একটি ভুল উত্তরের জন্য আপনার সেটগুলি সম্পৃক্ত হওয়ার পরেও আপনি দুটি বিএফএস শুরু করতে হবে ; অ্যালগরিদম অ-বর্ধিত না হলে এটিও অনিবার্য বলে মনে হয়))আর(তোমার দর্শন লগ করা)conflfindআরহে(α(এন))conflআর

এটা মত অনেক একটি বিশেষ ক্ষেত্রে হতে পারে শোনাচ্ছে গ্রাফ এর সকর্মক অবসান বজায় রাখার জন্য লা Poutré এবং ভ্যান Leeuwen এর পদ্ধতি

আমি বুঝতে পেরেছি এটি পুরোপুরি প্রশ্নের উত্তর দেয় না, তবে সম্ভবত এটি স্পষ্ট করার জন্য কাজ করে এবং গ্রাফ অ্যালগরিদমের সাথে আরও অভিজ্ঞতা সম্পন্ন কেউ সেটগুলি এনকোড করার জন্য আরও ভাল ডেটা কাঠামো দিতে পারেন ।আর


আপনার উত্তরের জন্য আপনাকে ধন্যবাদ, আমি আশা করি আমি আমার প্রশ্নটি এখন আরও স্পষ্ট করে তুলেছি: আমি সংযুক্ত উপাদানগুলির বিষয়ে চিন্তা করি না (তবে দৃ strongly়ভাবে সিসিগুলি চূড়ান্ত সমাধানে সহায়ক হতে পারে); আমার কাছে এখনও নেই এবং এই কোনও ডিএজে একক নোড হতে পারে না। আর ( ইউ )R(তোমার দর্শন লগ করা)R(তোমার দর্শন লগ করা)
jmad

u vR(তোমার দর্শন লগ করা)তোমার দর্শন লগ করাবনাম বনামতোমার দর্শন লগ করাতোমার দর্শন লগ করা

R(তোমার দর্শন লগ করা)

confl(u,v)আর(তোমার দর্শন লগ করা)আর(বনাম)find

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