ডাএজি-র ট্রান্সজিটিভ হ্রাস


13

আমি একটি ডিএজি প্রদত্ত ট্রানজিটি হ্রাস অনুসন্ধানের জন্য ও (ভি + ই) অ্যালগরিদমের সন্ধান করছি ।

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

যদি এটি একটি মানক সমস্যা হয় তবে দয়া করে আমাকে কিছু মডেল সমাধানের দিকে নির্দেশ করুন।


আপনি যে উইকিপিডিয়া লেমায় উল্লেখ করেছেন তাতে দেওয়া রেফারেন্সটি আপনি ব্যবহার করতে পারবেন না?
হেনড্রিক জানুয়ারী

2
ঠিক আছে, উইকিপিডিয়ায় আলোচিত অ্যালগরিদম অনুরোধ অনুসারে ( ভি + ) এর পরিবর্তে (সেরা ক্ষেত্রে, অর্থাত্ অ্যাসাইক্লিক গ্রাফের ক্ষেত্রে ) চলে runs আমি মনে করি এখানে সঠিক উত্তরটি হ'ল আপনি বর্তমানে যে অ্যালগরিদমটি সন্ধান করছেন তা সম্ভবত বিদ্যমান নাO(V×E)O(V+E)
কার্লোস লিনারস ল্যাপেজ

1
সম্মত হন যে আপনি যা চাইছেন তা বিদ্যমান তা পরিষ্কার নয়। এমন বেশ কয়েকটি কাগজপত্র রয়েছে যেগুলি অ্যালগরিদম থাকলে উদ্বিগ্ন হবে, উদাহরণস্বরূপ, বিজ্ঞান / দ্য ডটকম / সায়েন্স / পার্টিকাল / পিআইআই / 0012365X9390164O । এটি বলেছিল, আপনার প্রেরণা কী তা সম্পর্কে আপনি যদি আরও সুনির্দিষ্ট হতে পারেন তবে আরও নির্দিষ্ট সমাধান হতে পারে। উদাহরণস্বরূপ, আপনি গ্রাফ সম্পর্কে অন্য কিছু জানেন বা কাজ করবে? O(n(n+m))
উইলিয়াম ম্যাক্রে 22

আমি সমস্যাটি কোথাও দেখেছি, তবে অতিরিক্ত কোনও তথ্য ছিল না, সমস্যাটিতে টাইপোও থাকতে পারে।
করণ

1
আপনি যদি আপনার ডিএজি তে টপোলজিকাল বাছাই করেন তবে বাচ্চাদের ব্যবহার করে পৌঁছনোযোগ্য শিখুনের উপর নজর রাখুন, যেমন reachable[v]=vchildrenvreachable[v], তারপরে সাজানো গ্রাফের সর্বশেষ আইটেমটি থেকে শুরু করুন এবং অব্যবহৃত প্রান্তগুলি সরিয়ে ফেলুন এবং পৌঁছনীয় ফাংশন সংরক্ষণ করে উপরে যান, এটি আপনাকে সরিয়ে দেওয়ার সর্বাধিক সম্ভাব্য প্রান্ত দেয়, তবে এটি সর্বাধিক সম্ভাবনা পায় কিনা তা নিশ্চিত নই (এটি O(|E|+|V|)

উত্তর:


8

আমরা প্রতিটি প্রান্তিকের থেকে কেবল ডিএফএস করে এই সমস্যাটি সমাধান করতে পারি।

  1. প্রতিটি প্রান্তবিন্দু জন্য , প্রতিটি প্রান্তবিন্দু থেকে DFS শুরু বনাম যেমন যে বনাম সরাসরি বংশধর হয় তোমার দর্শন লগ করা , অর্থাত্। ( u , v ) একটি প্রান্ত।uGvvu(u,v)
  2. প্রতিটি প্রান্তবিন্দু জন্য থেকে DFS দ্বারা পৌঁছানো বনাম , প্রান্ত অপসারণ ( U , V ' )vv(u,v)

উপরের সামগ্রিক জটিলতা হ'ল ডিএফএস ' চালানোর জটিলতা , যা হে ( এন ( এন + এম ) )NO(N(N+M))


1
উল্লেখ্য, এসিম্পটোটিকভাবে, এই হিসাবে একই জটিলতা রয়েছে Wikipedia নিবন্ধটি প্রশ্ন নিজেই লিঙ্ক এ অ্যালগরিদম। O(NM)
ডেভিড রিচার্বি

1
একমত। যেহেতু এই প্রশ্নের জন্য একটি সংক্ষিপ্ত উত্তর ছিল, তাই আমি একটি উপস্থাপন করেছি। আরও, একটি সমাধান হ'ল আইএমও, সম্ভাবনা নেই। O(N)
প্রত্যক্ষ

3

O(|E|)

  1. uv
  2. u(v,u)
  3. wuv(v,w)
  4. (v,v)vv

v(v,v)v

O(|E|)


1

লেমা: যদি কোনও প্রান্ত ভি -> ওয়াই এবং ওয়াইয়েরও অপ্রত্যক্ষ উত্তরসূরি হয়, যেমন (যেমন, ভি -> ডাব্লু -> + ওয়াই) তবে প্রান্তটি ভি -> ওয়াই সংঘটিত এবং ট্রানজিটি মূলের অংশ নয়।

পদ্ধতি: বিপরীত টপোলজিকাল ক্রমে টার্মিনাল থেকে প্রাথমিক প্রান্তে কাজ করে প্রতিটি শিখরের ট্রানজিটিভ বন্ধের উপর নজর রাখুন। ভি এর অপ্রত্যক্ষ উত্তরসূরিদের সেট হ'ল ভি এর তাত্ক্ষণিক উত্তরসূরীদের ট্রানজিটিভ ক্লোজারগুলির মিলন V

অ্যালগরিদম:

    Initialise Visited as the empty set.
    For each vertex V of G, 
        Invoke Visit(V).

    Visit(V):
        If V is not in Visited,
            Add V to Visited, 
            Initialise Indirect as the empty set,
            For each edge V -> W in G,
                Invoke Visit(W),
                Add Closure(W) to Indirect.
            Set Closure(V) to Indirect.
            For each edge V -> W in G,
                Add W to Closure(V),
                If W is in the set Indirect,
                    Delete the edge V -> W from G.

এটি ধরে নিয়েছে যে আপনার শিখরগুলির সেট (যেমন, বিট মানচিত্র) এর ট্র্যাক রাখার কিছু দক্ষ উপায় রয়েছে তবে আমি মনে করি এই ধারণাটি অন্যান্য (ভি + ই) অ্যালগোরিদমেও তৈরি হয়েছে।

একটি সম্ভাব্য উপকারী পার্শ্ব-প্রতিক্রিয়া হ'ল এটি জি এর প্রতিটি ভার্টেক্সের ট্রানজিটিভ ক্লোজার খুঁজে পায়।


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

0

আমি একই সমস্যাটি সমাধান করেছি তবে এটি ঠিক একই রকম ছিল না reduction এটি হ্রাসের পরে গ্রাফের সর্বনিম্ন কোন সংখ্যার জন্য জিজ্ঞাসা করেছিল যে মূলত সংযুক্ত উল্লম্বগুলি এখনও সংযুক্ত রয়েছে এবং কোনও নতুন সংযোগ তৈরি হয়নি। এটি স্পষ্ট হিসাবে, এটি হ্রাস গ্রাফটি খুঁজে পেতে বলে না তবে কতটি অতিরিক্ত রিডান্ট্যান্ট প্রান্ত রয়েছে। এই সমস্যাটি ও (ভি + ই) এ সমাধান করা যেতে পারে। ব্যাখ্যার লিঙ্কটি হল https://codeforces.com/blog/entry/56326 । তবে আমি মনে করি গ্রাফটি আসলেই তৈরি করতে হবে, এতে ও (এন) এর চেয়ে বেশি জটিলতা থাকবে

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