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−
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)