Чи можна паралельно приєднуватися?


9

Припустимо, ми хочемо з'єднати два стосунки за присудком. Це в NC?

Я усвідомлюю, що доказ того, що його немає в NC, буде означати доказ того, що , тому я б прийняв докази, що це відкрита проблема як відповідь.PNC

Мене цікавлять загальний випадок, а також конкретні випадки (наприклад, можливо, з якоюсь конкретною структурою даних це може бути паралельне).

EDIT: щоб внести деякі пояснення з коментарів у цю публікацію:

  • Можна було б вважати еквіоїном . На одному процесорі алгоритм на основі хешу працює в і це найкраще, що ми можемо зробити, оскільки ми маємо читати кожен набірA.x=B.yO(|A|+|B|)
  • Якщо присудок - це «чорний ящик», де ми повинні перевірити кожну пару, єпари, і кожна з них може бути чи ні, тому можливості. Перевірка кожної пари ділить можливості навпіл, тому найкраще, що ми можемо зробити, це .|A||B|2abO(ab)

Чи міг би будь-який із цих (або якийсь третій тип з'єднання) бути вдосконалений до на декількох процесорах?logkn


Якщо це питання мотивоване практичною проблемою, майте на увазі, що NC може бути не найбільш підходящим поняттям "паралелізація".
Рафаель

@Raphael: це не так, але ви могли б посилання на щось, чому? Я можу задати це окремим питанням, якщо це більш доречно.
Xodarap

Мені незрозуміло, про що ви питаєте. Яка мова запиту базової реляційної бази даних, яку ви додаєте до неї оператора приєднання? Або ви задаєте складність запитів, які містять лише операторів приєднання? Або ваше справжнє питання полягає в тому, чи можна запускати операторів приєднання «паралельно» для досягнення кращої складності в часі? (аналогічно тому, що говорять AND, можна робити паралельно) Також зауважте, що (безпечний) SQL запит відповідає FOL (Count).
Каве

Або ви запитуєте, які найвідоміші верхня та нижня межі (класи складності) на складності, що обчислюють з'єднання, дають дві реляційні бази даних як вхідні дані.
Каве

2
@Xodarap: Ви можете знайти відповіді та коментарі до цього мого повчального питання; Я знаю, що зробив. Крускал та ін. (1990) - це також добре прочитане.
Рафаель

Відповіді:


1

n2процесори можуть порівнювати всі можливості в постійній глибині, так, так, це в NC.(n2)


Якщо ви збираєтесь взяти АБО, глибина буде логарифмічною.
sdcvvc

@sdcvvc: Досить справедливо. В крайньому випадку, ви можете кодувати 3SAT в реляційному обчисленні, тому цей результат справді справедливий лише у тому випадку, якщо ваші виділення прості (тобто постійний час).
Xodarap
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.