Gegeben sei ein Graph , wobei . Was ist ein schneller Algorithmus , um die Sammlung aller 2-Hop - Nachbarschaft Listen aller Knoten in zur Erzeugung .| V | = n V.
Naiv kannst du das in . Mit der Potenz von Matrizen können Sie dies mit Verwendung des Strassen-Algorithmus tun . Mit einem anderen Matrixmultiplikationsalgorithmus können Sie dies besser machen. Irgendeine bessere Methode? Irgendein Las Vegas Algorithmus?O ( n
Antworten:
Die Frage hängt wirklich davon ab, wie ein 2-Hop genau definiert ist. Wenn Sie mit einem 2-Hop die Menge meinen, dann lautet die aktuelle Antwort nein, Sie können es nicht schneller machen als wobei die übliche Konstante ist, die mit der Komplexität der Durchführung des Matrixprodukts verbunden ist.O ( n ω ) ω
Warum? Überprüfen Sie für jeden Scheitelpunkt , ob in neben dem Scheitelpunkt liegtWenn dies der Fall ist, haben Sie in Ihrem Diagramm ein Dreieck gefunden. Darüber hinaus ist das Diagramm dreieckfrei, wenn Sie mit dieser Eigenschaft keinen Scheitelpunkt finden .v h p ( v ) . vv v hp(v). v
Der derzeit bekannteste Algorithmus zum Testen, ob ein Graph dreieckfrei ist, hat die ZeitkomplexitätO(nω).
quelle