Нелинейная зависимость Янковский Дмитрий
– Шесть раз подряд? – усмехнулся Валька.
– Так, ладно, я еду.
– Никому не говори пока, хорошо? – попросил Валентин. – Ну… мало ли, может, это что-то принципиально новое…
– Бред. Я сейчас приеду и разберусь. Но если там что-то серьезное, то без Пашки нам все равно не справиться.
– Жаль, – вздохнул Валентин. – Хотя… На троих тоже можно будет поделить.
– Что делить, Валя? Шкуру неубитого медведя? Все, я еду. – Андрей положил трубку и пошел одеваться.
Такого Вальку Знобина Андрей еще не видел. Это был какой-то совершенно другой Валька, не опытный управляющий, не стратег, а маленький ребенок, которому пообещали новую игрушку, и он из кожи вон лезет, чтобы ее получить. Он без напоминания сбегал в магазин, пока Андрей почесывал затылок перед компьютером, сам заварил кофе, все порезал и разложил по блюдечкам и тарелочкам.
Андрей мысленно посмеивался, но помалкивал, пытаясь разобраться, что же, собственно, произошло. Все тесты показывали удвоение быстродействия на всех вычислительных операциях. Ровно вдвое – циферка в циферку. Но поскольку этого физически быть не могло, Андрей пытался выяснить не то, что произошло в действительности, а то, каким образом обманываются тесты.
– А… черт. – Он стукнул себя ладонью по лбу. – Фигней занимаюсь…
– Давай кофе выпьем, – предложил Валька.
– Да подожди ты… – отмахнулся Андрей. – Я ищу ошибку тестирования, а ведь ты ему задавал реальный просчет, а не тест.
– Ну. А до тебя это только сейчас дошло?
– Да. Ладно, давай пить кофе. Хотя подожди, я кэш посмотрю.
– Только, ради бога, ничего не меняй!
– Не буду, не буду.
Андрей открыл диалоговое окно переустановки параметров кэширования.
– Пятьдесят процентов, как она и говорила.
– И что, все дело только в этом движке? – удивился Валька, ставя чашки на стол. – Почему же никто не додумался?
Андрей задумчиво поглядел на монитор:
– Можно изменить параметры, проверить быстродействие, а затем снова выставить пятьдесят процентов. И проверить снова. Ничего другого менять не будем, не бойся.
– Давай. – Валька отпил кофе из чашки.
Андрей выставил шестьдесят процентов кэширования и запустил тест.
– Да, быстродействие упало вдвое, – сообщил он. – До обычного.
– Ставь обратно. – Валька напряженно отодвинул блюдце и повернулся к компьютеру.
– Не дрейфь, сейчас все верну, – усмехнулся Андрей и повел курсором мыши.
Янтарная стрелочка легла на нарисованный движок, справа от которого было написано: «Больше половины объема», а слева – «Меньше половины объема». Андрей сдвинул движок к середине, и всплывающий указатель высветил – «51 %». Еще чуть в сторону, и движок резко скакнул влево, перескочив середину. Указатель высветил – «49 %».
– Ты мышку когда последний раз чистил? – спросил Андрей и повертел шарик пальцем.
Он еще дунул в щелочку – для уверенности – и снова попробовал установить движок точно на середину. Но тот рывком проскочил заветную точку и замер.
– Пятьдесят один, – хмуро заметил Валька, уже понимая, что произошло непредвиденное. – Какого же хрена ты его двигал?
– Узнать-то надо было! – попробовал защититься Андрей.
– Ах, узнать? Экспериментатор…
Андрей спешно провел тесты на разных положениях движка. Быстродействие то уменьшалось, то увеличивалось, но превысить паспортное вдвое так и не удалось. Наилучшие показатели оказались именно на шестидесяти процентах, как и было сказано в руководстве.
– Пятьдесят точно не устанавливается? – Валька сам попробовал, но ничего не вышло. – Что будем делать?
– Изобретать квантовый компьютер, – невесело усмехнулся Андрей.
– Очень смешно, – нахмурился Валька. – У нас на руках был прототип, вдвое превышающий по мощности все существующие на настоящий момент машины. Причем достигалось это явно программным, а не аппаратным методом. И вот теперь, по твоей безалаберности, мы остались у разбитого корыта.
Он подумал несколько секунд, со вздохом глянул на остывающий кофе и спросил, стараясь не смотреть Андрею в глаза:
– Кто эта баба?
– Хрен ее знает… – честно ответил Андрей. – Программистка. Некрасивая. Я для отмазки проглядел пару программ и отправил ее на все четыре стороны. Валь, ну я же не знал, что она вытворит нечто подобное!
– Как ты с ней связывался? – Голос Валентина звучал тихо, ровно, но очень настойчиво.
– По телефону.
– Записан?
– Да. Я ей с мобилы звонил. Он должен был остаться в регистре набранных номеров.
– Звони.
– Прямо сейчас? – Андрей послушно снял телефон с пояса.
– Нет. Через год. – Валька опустился в кресло и одним глотком допил кофе. – Звони давай.
Андрей не любил сердитого Вальку. С начальством тот на короткой ноге – взбредет ему что-нибудь в голову, расхлебывай потом. Он вывел регистр на экран телефона и принялся перебирать номера.
– Нету, – наконец сказал он.
Валька нахмурился еще сильнее.
– Слушай, Валь, ну я в чем виноват? – не выдержал Андрей. – Чего ты дуешься? Знаешь ведь, что в этом регистре только пять последних номеров.
– Тебе мало платят? – вкрадчиво спросил Валька. – Ты не мог нормальную мобилу купить?
«Начинается…» – подумал Андрей.
– Платят нормально, – сказал он вслух.
– Вот и я так считаю. Ладно. Где у тебя еще есть ее телефон?
– Дома в почте. На сигаретной пачке еще был записан, но я ее выбросил.
– Езжай домой.
– Да погоди ты! – Андрей сел в свободное кресло и придвинул чашку с кофе. – На фиг она нужна? Давай лучше Пашку дернем. Он расщелкает это дело на раз.
Валька думал долго, взвесил все в уме, молча поглядывая на монитор.
– Ладно, – кивнул он.
– Это правильно. – У Андрея отлегло от сердца. – Если мы поймем, что к чему, то заработанного и на троих хватит. Без Пашки все равно не разобрались бы, а если бы и разобрались, кто бы нам теорию описал?
– Звони, звони… – нетерпеливо заерзал Валентин, постукивая по столу пухлыми пальцами.
Андрей набрал номер и дождался, когда на другом конце снимут трубку.
– Пашка, привет.
– О, хорошо, что ты позвонил! Я уже сам собирался.
– Погоди, – остановил его Андрей. – Об этом позже поговорим. У нас тут с Валентином кое-какая проблемка возникла. Очень насущная. Ты можешь приехать?
– Как раз собирался. Ты у Валентина?
– Да, в офисе.
– Очень хорошо. Я сейчас на Белорусской, так что буду скоро.
– Давай. На месте все объясним.
Андрей повесил телефон на пояс и взялся за бутерброд с колбасой.
– Паша сейчас на Белорусской, – сообщил он. – Скоро будет.
– Ладно, – кивнул Валька. – Думаешь, разберется?
– Обязательно разберется. Ты ведь знаешь, он один из лучших спецов. Помнишь, ему даже менты три года назад доверили сделать неподбираемый код для электронных замков.
– Помню. Но одно дело – коды с открытым ключом, а другое – делать то, что согласно современной теории невозможно в принципе.
– Баба ведь сделала! – успокоил его Андрей. – К тому же мы теперь точно знаем, что это возможно.
Пашка прибыл через полчаса.
– Ну, что тут у вас? – с ходу спросил он. – О, бутербродики…
Он ухватил бутерброд и поискал глазами свободную чашку для кофе.
– Ну и лица у вас. – Он включил кофеварку. – Как после всенощного бдения.
– На себя посмотри, – буркнул Андрей.
Пашка послушно глянул в зеркало у шкафа.
– У меня-то все как раз нормально, а у тебя глазенки как в начальной стадии конъюнктивита. Рассказывайте, в чем ваша проблема.
Валентин и Андрей переглянулись, затем, совершенно синхронно, посмотрели на Пашку.
– Вы что, издеваетесь? – Он заинтересованно поднял брови, не зная, злиться или смеяться.
– Паш… Ты стул возьми, – посоветовал Андрей. – А еще лучше вместо меня садись в кресло возле компьютера. Я и на стуле могу.
Совершенно сбитый с толку Пашка уселся возле машины.
– Вы яснее можете выражать свои мысли? – осторожно поинтересовался он.
– Сейчас, сейчас. Все расскажем, – пообещал Андрей.
Валентин встал и молча налил себе вторую чашку кофе.
– Сердце посадишь, – предупредил Пашка.
– С вами я его и так посажу… – фыркнул Валентин и наполнил чашку.
Андрей вздохнул и наконец подобрал нужную фразу для начала разговора:
– Паш, ты только не подумай, что мы психи…
– Хорошее начало, – усмехнулся Пашка, но в глазах появилась заинтересованность, которой раньше не было.
– Я тут, в кабинете, встречался с одной женщиной, – продолжил Андрей. – И мы смотрели программы, которые она принесла. Перед просмотром она их устанавливала, понятное дело. И попросила перестроить параметры кэша, чтоб увеличить быстродействие. Я ей позволил. Ну, мы посмотрели и разъехались. А сегодня звонит Валентин и говорит, что его машина работает вдвое быстрее обычного.
– Во сколько? – насторожился Пашка.
– Вдвое, – подтвердил Валентин.
– На каком алгоритме?
– Преобразование Фурье.
Пашка хихикнул и покачал головой:
– И это прямо сейчас можно замерить?
– Нет, – грустно ответил Андрей. – Я попробовал изменить параметры кэша, и все вернулось в привычные рамки.
– Вы мне голову морочите, да? – поднял брови Пашка. – Я уже готов узнать, в чем соль вашей шутки.
– Это не шутка. – Андрей тоже пошел выцеживать из кофеварки добавку.
– Так почему же ты не поставил параметры, на которых машина работала необычным образом?
– Они не устанавливаются, – объяснил Валентин.
– Что значит – не устанавливаются? Сколько там было? – Он потянулся к мышке.
– Пятьдесят процентов, – ответил Андрей.
Пашкина рука замерла и медленно опустилась на стол.
– Сколько, сколько?
– Не прикидывайся глухим, – осадил его Валентин.
Пашка откинулся на спинку кресла и рассмеялся, прикрыв лицо руками.
– Вспомнил! – сообщил он сквозь смех. – Была у нас такая байка. Это из той же оперы, что и карбюратор от «КамАЗа» и гусеницы от трактора «Беларусь»… Когда кто-то из «чайников» ругался, что машина работает медленно, мы советовали ему выставить кэш на пятьдесят процентов. Но емкость кэша может быть либо меньше, либо больше пятидесяти, там же русским языком написано… Ты хочешь сказать, что не знал этого?
– А почему? – вполне серьезно спросил Андрей. – Я всегда ставил шестьдесят, как советуют. Другого не пробовал.
– Тебе на пальцах объяснить или с формулами? – Пашка убрал ладони от раскрасневшегося лица.
– На пальцах.
– А… Хорошо. Память, построенная по ISP-технологии, уже шумит на квантовом уровне. Детальки там махонькие. Каждый бит хранится в десятке тысяч атомов, даже меньше, если реально. То есть при работе классических алгоритмов там накапливаются определенные погрешности, связанные с принципом суперпозиции состояний «ноль-единица». Чтобы исключить эту погрешность, на каждой операции вся память сканируется четыре раза подряд, битовые значения проверяются, погрешность отнимается и вычисления переходят на новый вычислительный шаг. Если же емкость кэша выставить ровно на пятьдесят процентов емкости памяти, то два такта сканирования придутся на кэш и лишь два оставшихся на память как таковую. В любом другом случае разница получается нечетной и принцип четверного сканирования сохраняется.
– Хорошо. А почему нельзя сканировать два раза? – решил уточнить Андрей.
– Потому что точность вычисления погрешности падает вдвое и ее придется вычитать уже по квантовым алгоритмам. А их пока нет. Есть только алгоритмы Шора и Гровера, но для этой операции они непригодны.
– Понятно, – кивнул Андрей. – Но если теоретически допустить возможность двойного сканирования, то машина будет работать в два раза быстрее?
– Да. Это и побудило Скотта учредить сорокамиллионную премию. Но на тысячном вычислительном шаге все твои нули перепутаются с единицами.
В тишине кабинета было слышно, как шуршит кондиционер. Где-то недалеко проехал мощный турбодизельный грузовик, и стекла дрогнули от его басовитого рева.
– Она это сделала, – внятно и очень спокойно произнес Валентин. – Она создала квантовый алгоритм для отсева шума!
Пашка притих. Он уже понял, что с ним не шутят.
– Но это ведь такой прорыв… – шепнул он. – Андрюха, где эта девушка?
– Не знаю. Ее телефон у меня дома остался.
– Стоп! – поднял руку Валентин. – Вы ведь устанавливали программы на мой компьютер?
– Да, – подтвердил Андрей.
– Так они должны были остаться! – Пашка радостно хлопнул себя ладонью по бедру и пробежал пальцами по клавишам. – Так… Вчерашнее состояние… Ага, точно. Загрузка в семнадцать двадцать пять. Вот чертовка! Нет, я в нее уже влюбился, хотя ни разу не видел!
– Она страшненькая, – предупредил Андрей. – Что там такое?
– Что? А… Программы со встроенным самоуничтожением. Все вычистила, как веником! Какая умница! Под такой системой! Нет, это просто гений в юбке.
– Она не носит юбку, – снова вставил Андрей.
Пашка глянул на него с непониманием:
– Звони ей скорее!
– Номер телефона только у меня дома, в ее письме.
– Поедем все вместе, – предложил Валентин.
Они спустились по лестнице и вышли к машине.
– Ты говорил о сорока миллионах? – напрямую спросил Валентин у Пашки.
– Если разово, то именно столько, – прикинул Пашка. – Ну, минус стоимость оформления патента. На таком уровне это может вылететь и в пятьсот тысяч. Но если устроить аукцион среди компаний, которые выпускают компьютеры, можно поднять и больше. Сам ведь Скотт собирался получить с этого выгоду, а не просто заплатить премию.
Андрей открыл машину, Валентин сел на переднее сиденье.
– Поехали, – коротко кивнул он и прикрыл глаза, откинув плешивую голову на подголовник.
Андрей запустил двигатель, выехал на трассу и хорошенько придавил педаль газа. Солнце нещадно слепило, выдавливая слезы из глаз. Андрей сощурился и нажал кнопку на панели, чуть затемнив лобовое стекло. Рекламные щиты с шелестом пролетали по бокам, словно раскрашенные мельничные крылья, по противошумным экранам плавали блики отраженного света.
– Не гони так, – не открывая глаз, попросил Валентин. – А то сейчас самое время разбиться.
Сверкающие стены небоскребов пускали тысячи солнечных зайчиков, торговый дом на Савеловской отливал ртутным блеском. Андрей много раз мысленно сравнивал город с растущим кристаллом, и сейчас это сравнение пришло снова – само собой. Ветер шумел в приоткрытом окне, шелест колес то нарастал, когда машина проскакивала под прозрачными трубами надземных переходов, то снова растворялся в открытом пространстве, стиснутом лишь щитами противошумных экранов. Это создавало отчетливое ощущение волнистости, хотя трасса была ровной – настоящая асфальтовая река, гладкая и сверкающая, как застывшая лава.
– Сегодня что, солнечная активность повышенная? – спросил Андрей.
– Не знаю, – пожал плечами Пашка. – Включил бы радио, там скажут.
– Ну его на фиг, – отмахнулся Андрей. – По всем станциям крутят одно и то же.
Он перестроился на фрилайн и еще добавил скорости.
Длинные гудки в трубке тянулись немыслимо долго.
– Ну что? – нетерпеливо спросил Валентин.
– Дома никого нет. – Андрей нажал кнопку отбоя и сел на диван.
– В каком хоть районе она живет?
– Медведково. Но до самого дома я ее не довозил. По номеру телефона в крайнем случае можно адрес узнать.
– Жаль, что программ не осталось. – Валентин вздохнул и сел рядом. – Можно было бы их распотрошить и понять, как все устроено. Тогда саму девушку можно было бы и не беспокоить. Похоже, она даже не знает, каким сокровищем обладает.
– Ну, это уже воровство, – раздался с кухни Пашкин голос. – Я вам обоим шеи сверну, если вы всерьез об этом подумали.
– Такие деньги не воруют, – усмехнулся Валентин. – Они либо идут в руки, либо нет.
– Это ты брось. – Пашка показал голову из-за дверного косяка. – Нам что, на четверых будет мало?
– Ладно, ладно… Остынь, – успокоил его Валентин. – Я пошутил. Рыцарь.
Андрей вспомнил, как год назад Пашка заявился к нему с разбитой физиономией. Причиной физических повреждений оказалась обычная подвальная мышь, которую пятеро подростков подвесили за хвост и пытались расстрелять из пневматики. Пережить издевательства над живой тварью Пашка не смог, отцепил мышь и выпустил, за что был избит до сотрясения мозга и вынужден был не только на две недели взять неоплачиваемый отпуск, но и объясняться с милицией. Только его заслуги перед МВД в качестве программиста-замочника позволили ему избежать суда – одному из подростков он умудрился сломать руку, а другому нос. Мышь, вредный грызун и переносчик заразы, не давала свести дело к необходимой самообороне или крайней необходимости. Тогда дело окончилось для Пашки публичными извинениями, солидным штрафом и оплатой лечения пострадавших парней.
И ведь он ни о чем не жалел. По крайней мере, на словах.
– Даже если бы программы были, – заявил Пашка, – я бы их не взломал. Судя по способностям нашей таинственной незнакомки, она меня самого многому могла бы научить. Хотя, с другой стороны, может, и не пришлось бы ничего ломать. Может, там простенькая утилитка – запустил, и все.
Андрей никак не мог решиться сказать про мини-диск. С одной стороны, была вероятность восстановления удаленных данных, а с другой – если не восстановятся, Валентин может нешуточно разозлиться. Получается, что именно он, Андрей, не понял, с программистом какого уровня имеет дело, стер все данные с диска, а под конец еще и уничтожил все доказательства открытия. Как специально. Так и назовут – «диверсант».
Но тут его пронзила всплывшая в памяти фраза: «Он у меня последний».
А что, если действительно?.. Что, если других копий этой уникальной программы просто не существует в природе? Да и неудобно звонить ей, когда с диска все стерто.
Андрей почувствовал, как по спине расползается липкий страх. Похоже было, что случилось непоправимое.
Этот вопрос лучше поднять, когда Валентин уедет. Пашка – парень попроще, по крайней мере, не вскрысится.
– Позвони-ка еще раз, – попросил Валентин. Андрей взял телефон и набрал семь цифр из восьми, чтобы точно никуда не дозвониться. Приложил трубку к уху и подождал, делая вид, будто прислушивается к длинным гудкам.
– Никого нет, – сообщил он и отложил трубку. Время шло. Пашка сбегал за пиццей, они пообедали.
Андрей еще дважды делал вид, что звонит.
– Ладно. – Валентин посмотрел на часы. – Не могу я тут торчать целый день.
– Тебя отвезти? – с готовностью предложил Андрей.
– Ты мне лучше найди эту девушку. Доехать я могу и на такси. Так что давайте, ребята. Вечером я вам позвоню.
Андрей закрыл за ним дверь.
– Фух-х… – сказал он, вытирая несуществующий пот с лица. – Паш, рассказывай о нашем деле! Это подождет, не протухнет.
– Это тоже дело серьезное, – не согласился Пашка. – Девушка, может, и не знает, какую важную проблему решила.
– Тебе никто никогда не говорил, что ты ненормальный? – поинтересовался Андрей.
– Настоящий программист просто обязан быть ненормальным, – усмехнулся Пашка. – Иначе ему грош цена.
– Но не настолько же… Тут дело о Нобелевке и сорока миллионах, а ты пытаешься мне толковать про какую-то девушку.
– Не про какую-то, а про талантливую. – Пашка мечтательно вздохнул. – Иди еще раз позвони.
– Я только что звонил, – отмахнулся Андрей. – Лучше расскажи, что ты накопал за ночь.
– А… Пойдем в лабораторию.
Они прошли в кабинет и сели напротив трех темных мониторных окошек.
– Короче, последовательность команд, которые ты в угаре давал Аватару, я восстановил. Это нам ничего не даст.
– Это еще почему? – насторожился Андрей.
– Видишь ли, анализ показывает, что после последних осмысленных команд ты просто бухнулся фэйсом на клавиатуру, нажав одновременно больше половины кнопок.
– Это я кофе пролил, – нахмурился Андрей.
– А… Тоже вариант. Но дело-то как раз в другом. Был третий компьютер. Точно был, теперь в этом нет ни малейших сомнений.
– И этот компьютер чисто случайно работал вдвое быстрее самой быстрой современной машины? – Андрей достал сигарету из вчерашней пачки, но прикуривать не стал. – Многовато случайностей…
– Нет. Не вдвое. – Пашка тоже взял сигарету и похлопал по карманам, отыскивая зажигалку.
Андрей протянул свою. Полыхнул огонек, и к потолку потянулась тонкая ленточка дыма.
– Не вдвое. – Пашка глубоко затянулся. – Я попробовал чисто математически восстановить ход вычислений, и у меня знаешь что получилось? – Он достал из кармана органайзер, открыл и выставил перед Андреем. – Вот этот блок шоровского алгоритма считали атомы в Черноголовке. Назовем его устройством номер один. Просчет не дошел до опорной точки, время декогерентности исчерпалось, и атомы перешли в хаотичное состояние. Все как обычно. Но через несколько сотых секунды они вновь запускаются в работу. Запускаются не под действием лазера, а сами собой, приняв исходные данные неизвестно с чего. Это «неизвестно что» просчитало вот эту часть алгоритма Шора. Назовем его устройством номер два. Дальше снова считает Черноголовка, снова не хватает полумиллиона шагов до логической точки, и тут включаешься в работу ты. Смотри. Вот она, твоя первая таинственная команда. Аватар сбросил тебе состояния отработавших атомов, твоя машина их обсчитывает, и ты отправляешь значение обратно на лазеры. Твой компьютер мы назовем устройством номер три.
– Это был ракетный пуск, – уверенно кивнул Андрей. – Аватар спросил у меня, запускать ракеты или нет. Я ответил «да».
– Ракетчик… – усмехнулся Пашка. – Ладно. Снова считают наши атомы. И снова не хватает полумиллиона шагов. Вот здесь и начинается самое интересное. – Пашка нервно почесал бедро и продолжил: – Наши атомы уже сдохли, но через двенадцать секунд ты меняешь длину пакета данных, повысив этим устойчивость связи, и вводишь команду, в точности соответствующую вот этой логической точке. Значит, этот кусок вычислений делает устройство номер четыре! Не атомы, не устройство номер два и не твой компьютер. А некое считающее нечто, связанное с тобой и не связанное с Черноголовкой. Оно передает тебе результат вычислений, ты набираешь его с клавиатуры и нажимаешь «Ввод». Включаются лазерные пушки, запускают наши атомы, и они досчитывают алгоритм до конца!
– Катапультирование, – вспомнил Андрей.
Пашка решил не острить.
– Отсюда прямой вывод, что устройство номер два было связано только с Черноголовкой и не связано с твоей машиной, а устройство номер четыре связано только с тобой. Даже не с твоим компьютером, иначе я бы нашел эти данные. Нет, Андрей, значение этой переменной ты получил напрямую. Уж вспоминай как.
– Охренеть… – Андрей все же прикурил сигарету.
– Быстродействие двух неизвестных устройств тоже было очень разным. – Пашка стряхнул пепел в пепельницу и продолжил уже спокойнее: – «Номер два» по параметрам ничем не отличался от любого из наших атомов, но сделал втрое больше вычислительных шагов. А «номер четыре» работал очень медленно, медленнее твоего компьютера, но тоже считал по квантовым алгоритмам. Это меня поначалу и сбило – средняя скорость двух неизвестных устройств оказалась как раз вдвое больше обычной.
– По-твоему выходит, что той ночью алгоритм Шора был просчитан на системе из трех квантовых устройств и моего компьютера?
– В самую точку. Одно из них – наши атомы, а два других сокрыты мраком. И если мы сможем их воссоздать, то квантовый компьютер у нас в руках. Вполне рабочий прототип. На нем можно будет коды ломать, честное слово.
– И комиссии можно показывать? – оживился Андрей.