У мене складний запит використовується для пошуку набору даних знайти . Кожен запит займає в середньому час тому загальний час у лінійному пошуку становить . Я можу розбити запит на більш прості підзапити q_i і знайти і де . Кожен підзапит набагато швидше обчислити, тому в цілому його швидше знайти а потім використовувати знайти .
Кожен має багато . Перекриття між різнимивисока. Я шукаю спосіб визначити набір рішень, що нагадують дерево, з фіксованими питаннями які мінімізують середній час пошуку H_exact на основі великої вибірки пошукових запитів.
Щоб зробити це більш конкретним, припустимо, набір даних містить 7 мільярдів людей у світі, а складні запити - це такі речі, як "жінка, яка живе в червоному будинку на розі 5-го та Лексінгтоні в місті, що починається з B."
Очевидне рішення - перевірити кожну людину в світі та побачити, хто відповідає запиту. Такої людини може бути більше. Цей метод займає тривалий час.
Я міг би заздалегідь обчислити цей запит, і в цьому випадку це було б дуже швидко .. але тільки для цього питання. Однак я знаю, що інші запити стосуються жінки, яка живе в синьому будинку на тому ж куті, чоловіка, який живе в тому ж куті, того ж питання, але в місті, що починається з C, або чогось зовсім іншого, наприклад " король Швеції.
Натомість я можу розбити складне питання на набір простіших, але загальніших наборів. Наприклад, усі перераховані вище питання містять ґендерно-рольовий запит, тому я можу скласти набір усіх людей у світі, які вважають себе "жінкою". Цей суб-запит фактично не займає часу, тому загальний час пошуку зменшується приблизно на 1/2. (Припускаючи, що за іншими знаннями ми знаємо, що шведський "король" не може бути "жінкою". Хатшепсут був єгипетською жінкою, яка була королем.)
Однак іноді виникають запити, які не ґендерні, наприклад, "людина, яка живе на 8-й вулиці в червоному будинку в місті, починаючи з". Я бачу, що підзапит «живе в червоному будинку» є загальним, і попередньо обчислити список усіх тих людей, які живуть у червоному будинку.
Це дає мені дерево рішень. У звичайному випадку кожна гілка дерева рішень містить різні запитання, а методи вибору оптимальних умов для дерева рішень добре відомі. Однак я будую на існуючій системі, яка вимагає, щоб усі відділення задавали однакові запитання.
Ось приклад можливого набору остаточного рішення: питання 1 - це «людина, яка жінка?», Питання 2 - «чи живе людина в червоному будинку?», Питання 3 - «чи живе людина в місті, починаючи з А чи людина живе в місті, починаючи з B? ', А питання 4 - "чи живе людина на нумерованій вулиці?".
Коли запит заходить, я бачу, чи є його відповідати будь-якому з попередньо обчислених питань Я визначив. Якщо так, то я отримую перетин цих відповідей і задаю питанняна цьому підмножині перетину. Наприклад, якщо питання "люди, які живуть у червоному будинку на острові", то виявимо, що "людина живе в червоному будинку" вже попередньо обчислено, тож лише питання пошуку підмножини тих, хто також живе на острові.
Я можу отримати модель витрат, переглянувши набір багатьох і перевірте, щоб побачити розмір відповідного . Я хочу мінімізувати середній розмір.
Питання в тому, як я оптимізую підбір можливих прийняти це фіксоване дерево рішень? Я спробував GA, але це було повільно сходитися. Можливо, тому, що в моєму просторі можливостей є кілька мільйонів. Я придумав жадібний метод, але результатом я не задоволений. Це теж дуже повільно, і я думаю, що я оптимізую неправильну річ.
На які існуючі дослідження я повинен шукати ідеї?