Должно получиться очень разветвленное дерево, вернее, объемный граф связей, в центре которого находится один человек – мой несостоявшийся убийца. Отмаркированные люди должны выделяться на общем фоне согласно их приоритету. Я вполне понимал сложность задуманного. Ведь может так получиться, что согласно старой теории о «шести рукопожатиях» в результате у меня в графе может оказаться весь Широтон, а то и больше. Но я не видел в этом серьезной проблемы. Главное – проследить связи и влезть в бой, кое-что своими глазами посмотреть. Да даже если ничего и не получится, горевать особо не буду. Ну придавлю потихоньку непосредственного исполнителя, и ладно. К возможным дополнительным нападениям я почему-то отношусь вполне индифферентно.
Для реализации задумки в качестве основного инструмента я взял разработанный ранее мой первый почти полноценный комп, то есть упрощенное ядро инфосервера (по факту и образно – тень ядра). Навесил на него определитель лиц, созданный для поиска человека с востока, немного изменив в плане более широкого определения людей. Подключил ядро болталки, чтобы, если понадобится, посмотреть, что там и как. Написал логику определения общения – от обычного разговора до простых касаний. Надеюсь, эти люди не используют секретную переписку, знаки на стенах и прочую конспирологическую фигню, а также общение по амулетам связи. Насколько я знаю, даже чародеи не особо ими пользуются, что уж говорить об обычных людях. Сложнее всего оказалось написать самогенератор. То есть такое устройство должно было «родить» свою копию и подсадить ее на встреченного человека. С симбионтами такое было легче реализовать, но тут они, к сожалению, не в тему. Эта задача напомнила мне упражнение из детства, когда я только начинал программировать – там надо было написать программу, которая распечатывает сама себя символ в символ. Так и тут. Пожалуй, данный генератор оказался самым сложным модулем системы, отчего он у меня сначала не выходил, а потом слишком загромождал всю конструкцию. Из-за этого объем плетения и сложность исполнения возрастали многократно.
Результат хоть и работал, но категорически мне не нравился. Я в конце концов плюнул и поступил по-другому. Все равно каждый такой модуль коннектится к инфосерверу. Вот и пусть тот генерит по шаблону и по запросу нужные плетения, отдает моему шпиону, а тот будет подключать их к новому человеку. Кроме того, так проще и обновлять шпиона, если вдруг понадобится. Алгоритм подключения тоже уже отработан на амулетах, позволяющих цеплять к человеку болталку. Осталось только предусмотреть разрешение конфликтов, если вдруг человек решит подключить мою «лицензионную» болталку, ну и еще множество мелких и не очень моментов.
Еще неплохо было бы прикрутить что-нибудь связанное с аурами. Например, возможность определять ее тонкие состояния и изменение у реципиента и встречных людей. Но… Время уже утекало. И еще я пожалел, что не прочитал древнюю книгу в кристалле. Почему-то мне казалось, что именно там есть нужные сведения как раз о таком магичинье. Ну да ладно. В любом случае у меня есть возможность на ходу обновлять мои шпионские инфомагические паучки: все они связываются с инфосервером, который строит граф и собирает статистику. Ну а я уже получаю выжимку, хотя могу влезть и в любой узел, и в любой алгоритм. Причем могу все наблюдать и в процессе, то есть промежуточные состояния, и работу алгоритма. Так сказать, визуализированная отладка в режиме реального времени.
Отправка по инфонити моего подарка и прикрепление его к убийце не составили большого труда и не заняли много времени. Мужчина как раз собрался спуститься в зал поесть, так что я расположился поудобнее в кресле и приготовился отлаживать систему по ходу дела.
На внутреннем экране появилась первая связь. Ею оказалась официантка таверны. Алгоритму распознавания показалась подозрительной ситуация, когда девушка выложила на стол содержимое подноса и перекинулась с клиентом парой слов. Кроме «белого» списка слов и фраз, у меня был и «черный», который в определенной комбинации со словами из «белого» списка отменял их. Там тоже довольно сложная лингвистическая задачка была, но мне вполне знакомая. Кстати, в процессе упрощения и уплощения ядра сервера потерялись и многие навороченные модули-программы. В том числе и связанные с лингвистикой, так как это все было завязано на внутренний искусственный интеллект сервера, который в общем-то и усложнял всю систему (как только хорошо освоюсь со всем этим добром, то и до него доберусь). Поэтому пришлось использовать эти допотопные алгоритмы и подходы – «белые» и «черные» списки, какую-то несложную логику.