हम किनारों के अस्तित्व के लिए जाँच करके सभी को समाप्त कर सकते हैं, क्योंकि हम प्रत्येक किनारे की एक संभावना की जाँच कर सकते हैं। विशेष रूप से, अगर वहाँ एक किनारे से जा रहा है के लिए , हम को खत्म और करने के लिए पर कदम (के रूप में एक और शिखर से पहुँचा जा सकता है); यदि नहीं, तो हम समाप्त करते हैं (क्योंकि यह से नहीं पहुँचा जा सकता है )। एक बार जब हम अंतिम शीर्ष पर पहुंच जाते हैं, तो जो भी समाप्त नहीं होता है, उसकी तुलना एक दूसरे के शीर्ष के साथ की जानी चाहिए (सुनिश्चित करें कि सुपरस्टार की स्थिति बरकरार है: एक किनारे आने वाली है लेकिन आउटगोइंग नहीं है) जब तक कि इसे समाप्त नहीं किया जाता या सुपरस्टार के रूप में पुष्टि नहीं की जाती। कुछ छद्मकोड:n−1xyxyyx
vertex superstar(graph g)
current vertex = first
# Go through each vertex
for each subsequent vertex in g ("next")
# If there's an edge from this to the next, we eliminate this one [move to the new one].
# If not, we just stay here.
if edge exists from current to next
candidate = next
end if
end for
# Now we are on the final remaining candidate, check whether it satisfies the requirements.
# just a rename for clarity
candidate = current
for each other vertex in g
if edge from current to other exists
return null
else if no edge from other to current
return null
end if
end for
return candidate
end superstar
आइए एक उदाहरण के माध्यम से चलकर विधि का वर्णन करें। इस सरणी को, शीर्ष पर स्रोत शीर्ष के साथ और पक्ष पर गंतव्य के साथ लें। 1 एक किनारे को इंगित करता है:
12341−11121−11300−04111−
मैंने उन शीर्षकों को ग्रे कर दिया है जिन्हें हमने संभावित सुपरस्टार के रूप में खारिज किया है। हम उन किनारों को इंगित करने के लिए हरे और लाल रंग का उपयोग करेंगे जो हम देख रहे हैं जब वे करते हैं और उस किनारे को शामिल नहीं करते हैं जिसे हम खोज रहे हैं, और नीले रंग को इंगित करने के लिए जहां हम पहले ही देख चुके हैं।
हम शीर्ष 1 और 2 को देखकर शुरू करते हैं।
12341−11121−11300−04111−
हरे रंग की संख्या से पता चलता है कि 2 से 1 तक बढ़त है, इसलिए हम 2 को खत्म करते हैं और एक बढ़त की तलाश करते हैं 3 से 1:
12341−11121−11300−04111−
हम देखते हैं कि ऐसी कोई बढ़त नहीं है, इसलिए हम 1 को खत्म करते हैं और 3 को हमारे वर्तमान शीर्ष के रूप में लेते हैं। याद रखें कि हमने पहले ही 2 को समाप्त कर दिया है, इसलिए देखें कि क्या 4 से 3 तक बढ़त है:
12341−11121−11300−04111−
4 से 3 तक एक बढ़त है, इसलिए हम 4 को खत्म कर देते हैं। इस बिंदु पर हमने सभी (3) में से एक को समाप्त कर दिया है, इसलिए इसके किनारों की जांच करें और देखें कि क्या यह योग्य है:
12341−11121−11300−04111−
1 से 3 तक बढ़त है, लेकिन रिवर्स नहीं है, इसलिए 3 अभी भी एक उम्मीदवार है।
12341−11121−11300−04111−
2 से 3 तक बढ़त भी है, लेकिन रिवर्स नहीं है, इसलिए 3 अभी भी एक उम्मीदवार है।
12341−11121−11300−04111−
4 से 3 तक बढ़त है लेकिन 3 से 4 नहीं; जो 3 के किनारों की हमारी जाँच पूरी करता है और हमने पाया है कि यह वास्तव में एक सुपरस्टार है।
चूंकि हम पहले एज चेक में से प्रत्येक पर एक संभावित सुपरस्टार के रूप में एक शीर्ष को समाप्त करते हैं
, इसलिए सबसे अच्छा मामला यह है कि वें चेक जटिलता के लिए अंतिम शीर्ष को समाप्त करता है । सबसे खराब स्थिति में (अंतिम या दूसरे-से-अंतिम शीर्ष पर एक सुपरस्टार है, या अंतिम चेक इसे अयोग्य घोषित करता है), पहले तुलना के बाद हम उम्मीदवार की तुलना अधिक वर्टिकल के साथ करते हैं, ( ) की सबसे खराब स्थिति । तो, यह एल्गोरिथ्म
।n−1nnn−12×(n−1)3n−3O(n)Θ(n)