Kita dapat menghilangkan semua kecuali satu dari simpul dengan memeriksa keberadaan edge karena kita dapat menghilangkan satu kemungkinan untuk setiap edge yang kita periksa. Secara khusus, jika ada sisi bergerak dari x ke y , kita menghilangkan x dan beralih ke y (karena titik lain dapat dicapai darinya); jika tidak, kita hilangkan y (karena tidak dapat dicapai dari x ). Setelah kami mencapai simpul terakhir, simpul mana pun yang tidak dihilangkan harus dibandingkan satu sama lain (pastikan kondisi superstar ditegakkan: ada tepi masuk tetapi tidak keluar) sampai dihapus atau dikonfirmasi sebagai superstar. Beberapa pseudocode: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
Mari kita telusuri contoh untuk menggambarkan metode ini. Ambil array ini, dengan simpul sumber di atas dan tujuan di samping. 1 menunjukkan tepi:
12341−11121−11300−04111−
Saya akan menghapus simpul yang telah kita singkirkan sebagai superstar potensial. Saya akan menggunakan hijau dan merah untuk menunjukkan tepi yang kita lihat ketika mereka lakukan dan tidak mengandung tepi yang kita cari, dan biru untuk menunjukkan di mana kita sudah melihat.
Kita mulai dengan melihat simpul 1 dan 2.
Angka hijau menunjukkan ada tepi dari 2 ke 1, jadi kami menghilangkan 2 dan mencari tepi dari 3 ke 1 :
12341−11121−11300−04111−
12341−11121−11300−04111−
Kami melihat tidak ada tepi seperti itu, jadi kami menghilangkan 1 dan mengambil 3 sebagai simpul kami saat ini. Ingatlah bahwa kami telah menghilangkan 2, jadi lihat apakah ada keunggulan dari 4 hingga 3:
12341−11121−11300−04111−
Ada tepi dari 4 hingga 3, jadi kami menghilangkan 4. Pada titik ini kami telah menghilangkan semua kecuali satu dari simpul (3), jadi periksa ujungnya dan lihat apakah memenuhi syarat:
12341−11121−11300−04111−
Ada keunggulan dari 1 ke 3 tapi bukan sebaliknya, jadi 3 masih kandidat.
12341−11121−11300−04111−
Ada juga keunggulan dari 2 ke 3 tetapi bukan sebaliknya, jadi 3 masih kandidat.
12341−11121−11300−04111−
Ada keunggulan dari 4 ke 3 tetapi tidak 3 ke 4; yang melengkapi pemeriksaan 3 sisi kami dan kami telah menemukan bahwa itu sebenarnya adalah seorang superstar.
n−1nnn−12×(n−1)3n−3O(n)Θ(n)