Können Verknüpfungen parallelisiert werden?


9

Angenommen, wir möchten zwei Beziehungen zu einem Prädikat verbinden. Ist das in NC?

Mir ist klar, dass ein Beweis dafür, dass es nicht in NC ist, einem Beweis dafür , dass , also würde ich Beweise dafür akzeptieren, dass es sich um ein offenes Problem handelt.PNC

Ich interessiere mich sowohl für den allgemeinen als auch für den speziellen Fall (z. B. kann er mit einer bestimmten Datenstruktur parallelisiert werden).

EDIT: um einige Klarstellungen aus den Kommentaren in diesen Beitrag zu bringen:

  • Wir könnten eine äquijoin . Auf einem einzelnen Prozessor wird ein Hash-basierter Algorithmus in Dies ist das Beste, was wir tun können, da wir jeden Satz lesen müssenA.x=B.yO(|A|+|B|)
  • Wenn das Prädikat eine "Black Box" ist, in der jedes Paar überprüft werden muss, gibt esPaare, und jeder könnte in oder nicht sein, also Möglichkeiten. Wenn Sie jedes Paar überprüfen, werden die Möglichkeiten in zwei Hälften geteilt. Das Beste, was wir tun können, ist .|A||B|2abO(ab)

Könnte einer dieser (oder ein dritter Join-Typ) auf mehreren Prozessoren auf verbessert werden ?logkn


Wenn diese Frage durch ein praktisches Problem motiviert ist, denken Sie daran, dass NC möglicherweise nicht der am besten geeignete Begriff für "parallelisierbar" ist.
Raphael

@ Raphael: ist es nicht, aber könntest du auf etwas verlinken, warum? Ich kann dies als separate Frage stellen, wenn dies angemessener ist.
Xodarap

Mir ist nicht klar, was Sie fragen. Was ist die relationale Datenbank-Abfragesprache, zu der Sie den Join-Operator hinzufügen? Oder fragen Sie nach der Komplexität von Abfragen, die nur Join-Operatoren enthalten? Oder ist Ihre eigentliche Frage, ob es möglich ist, Join-Operatoren "parallel" auszuführen, um eine bessere Zeitkomplexität zu erreichen? (Ähnlich wie AND parallel ausgeführt werden kann) Beachten Sie auch, dass (sichere) SQL-Abfragen FOL (Count) entsprechen.
Kaveh

Oder fragen Sie, was die bekanntesten Ober- und Untergrenzen (Komplexitätsklassen) für die Komplexität sind, die den Join berechnet, wenn zwei relationale Datenbanken als Eingabe verwendet werden?
Kaveh

2
@ Xodarap: Vielleicht finden Sie die Antworten und Kommentare zu meiner Frage lehrreich. Ich weiß, dass ich es getan habe. Kruskal et al. (1990) ist auch eine gute Lektüre.
Raphael

Antworten:


1

n2 Prozessoren können alle -Möglichkeiten in konstanter Tiefe vergleichen, also ja, es ist in NC.(n2)


Wenn Sie OR nehmen, ist die Tiefe logarithmisch.
SDCVVC

@sdcvvc: Fair genug. Im Extremfall könnten Sie 3SAT im relationalen Kalkül codieren, sodass dieses Ergebnis nur dann wirklich gilt, wenn Ihre Auswahl einfach ist (dh konstante Zeit).
Xodarap
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.