कमी-कुंजी और वृद्धि-कुंजी संचालन दोनों के साथ प्राथमिकता कतार


11

एक Fibonnaci हीप निम्नलिखित कार्यों का समर्थन करता है:

  • insert(key, data) : डेटा संरचना में एक नया तत्व जोड़ता है
  • find-min() : न्यूनतम कुंजी के साथ तत्व को एक पॉइंटर लौटाता है
  • delete-min() : न्यूनतम कुंजी के साथ तत्व को निकालता है
  • delete(node) : द्वारा इंगित किया गया तत्व हटाता है node
  • decrease-key(node) : द्वारा इंगित तत्व की कुंजी घट जाती है node

सभी नॉन-डिलीट ऑपरेशंस (amortized) टाइम हैं, और डिलीट ऑपरेशंस एमॉर्टाइज्ड टाइम हैं।O ( लॉग एन )O(1)O(logn)

क्या कोई प्राथमिकता कतार के कार्यान्वयन हैं जो (amortized) समय increase-key(node)में भी समर्थन करते हैं ?O(1)


@ राफेल यदि आप न्यूनतम तत्व की कुंजी को बढ़ाते हैं ताकि यह अब सबसे बड़ी कुंजी है, तो यह तुरंत स्पष्ट नहीं है (कम से कम मेरे लिए) कि आपको रीबैलेंसिंग की सुपर-निरंतर राशि करने की ज़रूरत नहीं है।
जो

जवाबों:


10

मान लें कि आप एक प्राथमिकता कतार है कि है , , और । फिर निम्नलिखित एक छँटाई एल्गोरिथ्म है जो समय लेता है :O ( n )O(1) find-minincrease-keyinsertO(n)

vector<T>
fast_sort(const vector<T> & in) {
  vector<T> ans;
  pq<T> out;
  for (auto x : in) {
    out.insert(x);
  }
  for(auto x : in) {
    ans.push_back(*out.find_min());
    out.increase_key(out.find_min(), infinity);
  }
  return ans;
}

1
मैंने मान लिया था कि (de|in)crease-keyकेवल प्लस या माइनस किया है।
राफेल

और क्या कोई डीएस मौजूद है जो निरंतर समय में वृद्धि-कुंजी संचालन की अनुमति देता है लेकिन लघुगणक (या अधिक) में कमी करता है? (एक मिनट के ढेर के लिए)
गोंज़ालो सोलेरा

2
@GonzaloSolera: इस उत्तर में असंभवता में कमी-कुंजी की परवाह नहीं की जाती है; O (1) खोज-मिनट, वृद्धि-कुंजी, और सम्मिलित करना पहले से ही एक समस्या है (और सबूत की निर्भरता वास्तव में आवश्यक नहीं है; O (n) ढेर करना पर्याप्त है, या हम शायद एक ही ढेर को कई पर फिर से उपयोग कर सकते हैं; यह साबित करने के लिए कि यह तुलना के प्रकार की सीमा का उल्लंघन करता है, चाहे वह ढेर या डालने की लागत की परवाह किए बिना)।
user2357112

ठीक है माफ करना, मुझे याद है कि पढ़ा। आपके कमेंट के लिए धन्यवाद!
गोंजालो सोलेरा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.