Алгоритм поиска A*

Поделись знанием:
(перенаправлено с «А*»)
Перейти к: навигация, поиск

Поиск A* (произносится «А звезда» или «А стар», от англ. A star) — в информатике и математике, алгоритм поиска по первому наилучшему совпадению на графе, который находит маршрут с наименьшей стоимостью от одной вершины (начальной) к другой (целевой, конечной).

Порядок обхода вершин определяется эвристической функцией «расстояние + стоимость» (обычно обозначаемой как f(x)). Эта функция — сумма двух других: функции стоимости достижения рассматриваемой вершины (x) из начальной (обычно обозначается как g(x) и может быть как эвристической, так и нет), и функции эвристической оценки расстояния от рассматриваемой вершины к конечной (обозначается как h(x)).

Функция h(x) должна быть допустимой эвристической оценкой, то есть не должна переоценивать расстояния к целевой вершине. Например, для задачи маршрутизации h(x) может представлять собой расстояние до цели по прямой линии, так как это физически наименьшее возможное расстояние между двумя точками.

Этот алгоритм был впервые описан в 1968 году Питером Хартом[en], Нильсом Нильсоном[en] и Бертрамом Рафаэлем[en]. Это по сути было расширение алгоритма Дейкстры, созданного в 1959 году. Новый алгоритм достигал более высокой производительности (по времени) с помощью эвристики. В их работе он упоминается как «алгоритм A». Но так как он вычисляет лучший маршрут для заданной эвристики, он был назван A*.

Обобщением для него является двунаправленный эвристический алгоритм поиска.





История

В 1964 году Нильс Нильсон изобрёл эвристический подход к увеличению скорости алгоритма Дейкстры. Этот алгоритм был назван А1. В 1967 году Бертрам Рафаэль сделал значительные улучшения по этому алгоритму, но ему не удалось достичь оптимальности. Он назвал этот алгоритм A2. Тогда в 1968 году Питер Э. Харт представил аргументы, которые доказывали, что A2 был оптимальным при использовании последовательной эвристики лишь с незначительными изменениями. В его доказательство алгоритма также включён раздел, который показывал, что новый алгоритм A2 был возможно лучшим алгоритмом, учитывая условия. Таким образом, он обозначил новый алгоритм в синтаксисе звёздочкой, он начинается на А и включал в себя все возможные номера версий.

Описание алгоритма

A* пошагово просматривает все пути, ведущие от начальной вершины в конечную, пока не найдёт минимальный. Как и все информированные алгоритмы поиска, он просматривает сначала те маршруты, которые «кажутся» ведущими к цели. От жадного алгоритма, который тоже является алгоритмом поиска по первому лучшему совпадению, его отличает то, что при выборе вершины он учитывает, помимо прочего, весь пройденный до неё путь. Составляющая g(x) — это стоимость пути от начальной вершины, а не от предыдущей, как в жадном алгоритме.

В начале работы просматриваются узлы, смежные с начальным; выбирается тот из них, который имеет минимальное значение f(x), после чего этот узел раскрывается. На каждом этапе алгоритм оперирует с множеством путей из начальной точки до всех ещё не раскрытых (листовых) вершин графа — множеством частных решений, — которое размещается в очереди с приоритетом. Приоритет пути определяется по значению f(x) = g(x) + h(x). Алгоритм продолжает свою работу до тех пор, пока значение f(x) целевой вершины не окажется меньшим, чем любое значение в очереди, либо пока всё дерево не будет просмотрено. Из множества решений выбирается решение с наименьшей стоимостью.

Чем меньше эвристика h(x), тем больше приоритет, поэтому для реализации очереди можно использовать сортирующие деревья.

Множество просмотренных вершин хранится в closed, а требующие рассмотрения пути — в очереди с приоритетом open. Приоритет пути вычисляется с помощью функции f(x) внутри реализации очереди с приоритетом.

Псевдокод:

function A*(start, goal, f)
     % множество уже пройденных вершин
     var closed := the empty set
     % множество частных решений
     var open := make_queue(f)
     enqueue(open, path(start))
     while open is not empty
         var p := remove_first(open)
         var x := the last node of p
         if x in closed
             continue
         if x = goal
             return p
         add(closed, x)
         % добавляем смежные вершины
         foreach y in successors(x)
             enqueue(open, add_to_path(p, y))
     return failure

Множество уже пройденных вершин можно опустить (при этом алгоритм превратится в поиск по дереву решений), если известно, что решение существует, либо если successors умеет отсекать циклы.

Пример

Примером алгоритма A* в действии, где узлы — это города, связанные дорогами и Н (х) является самым коротким расстоянием до целевой точки:

Ключ: зелёный — начало, синий — цель, оранжевый — посещённые узлы.

Свойства

Как и алгоритм поиска в ширину, A* является полным в том смысле, что он всегда находит решение, если таковое существует.

Если эвристическая функция h допустима, то есть никогда не переоценивает действительную минимальную стоимость достижения цели, то A* сам является допустимым (или оптимальным), также при условии, что мы не отсекаем пройденные вершины. Если же мы это делаем, то для оптимальности алгоритма требуется, чтобы h(x) была ещё и монотонной, или преемственной эвристикой. Свойство монотонности означает, что если существуют пути A—B—C и A—C (не обязательно через B), то оценка стоимости пути от A до C должна быть меньше либо равна сумме оценок путей A—B и B—C. (Монотонность также известна как неравенство треугольника: одна сторона треугольника не может быть длиннее, чем сумма двух других сторон.) Математически, для всех путей x, y (где y — потомок x) выполняется:

<math>g(x) + h(x) \le g(y) + h(y).</math>

A* также оптимально эффективен для заданной эвристики h. Это значит, что любой другой алгоритм исследует не меньше узлов, чем A* (за исключением случаев, когда существует несколько частных решений с одинаковой эвристикой, точно соответствующей стоимости оптимального пути).

В то время как A* оптимален для «случайно» заданных графов, нет гарантии, что он сделает свою работу лучше, чем более простые, но и более информированные относительно проблемной области алгоритмы. Например, в неком лабиринте может потребоваться сначала идти по направлению от выхода, и только потом повернуть назад. В этом случае обследование вначале тех вершин, которые расположены ближе к выходу (по прямой дистанции), будет потерей времени.

Особые случаи

В общем говоря, поиск в глубину и поиск в ширину являются двумя частными случаями алгоритма A*. Для поиска в глубину возьмём глобальную переменную-счётчик С, инициализировав её неким большим значением. Всякий раз при раскрытии вершины будем присваивать значение счётчика смежным вершинам, уменьшая его на единицу после каждого присваивания. Таким образом, чем раньше будет открыта вершина, тем большее значение h(x) она получит, а значит, будет просмотрена в последнюю очередь. Если положить h(x) = 0 для всех вершин, то мы получим ещё один специальный случай — алгоритм Дейкстры.

Тонкости реализации

Существует несколько особенностей реализации и приёмов, которые могут значительно повлиять на эффективность алгоритма. Первое, на что не мешает обратить внимание — это то, как очередь с приоритетом обрабатывает связи между вершинами. Если вершины добавляются в неё так, что очередь работает по принципу LIFO, то в случае вершин с одинаковой оценкой A* «пойдёт» в глубину. Если же при добавлении вершин реализуется принцип FIFO, то для вершин с одинаковой оценкой алгоритм, напротив, будет реализовывать поиск в ширину. В некоторых случаях это обстоятельство может оказывать существенное значение на производительность.

В случае, если по окончании работы от алгоритма требуется маршрут, вместе с каждой вершиной обычно хранят ссылку на родительский узел. Эти ссылки позволяют реконструировать оптимальный маршрут. Если так, тогда важно, чтобы одна и та же вершина не встречалась в очереди дважды (имея при этом свой маршрут и свою оценку стоимости). Обычно для решения этой проблемы при добавлении вершины проверяют, нет ли записи о ней в очереди. Если она есть, то запись обновляют так, чтобы она соответствовала минимальной стоимости из двух. Для поиска вершины в сортирующем дереве многие стандартные алгоритмы требуют времени O(n). Если усовершенствовать дерево с помощью хеш-таблицы, то можно уменьшить это время.

Почему A* допустим и оптимален

Алгоритм A* и допустим, и обходит при этом минимальное количество вершин, благодаря тому, что он работает с «оптимистичной» оценкой пути через вершину. Оптимистичной в том смысле, что, если он пойдёт через эту вершину, у алгоритма «есть шанс», что реальная стоимость результата будет равна этой оценке, но никак не меньше. Но, поскольку A* является информированным алгоритмом, такое равенство может быть вполне возможным.

Когда A* завершает поиск, он, согласно определению, нашёл путь, истинная стоимость которого меньше, чем оценка стоимости любого пути через любой открытый узел. Но поскольку эти оценки являются оптимистичными, соответствующие узлы можно без сомнений отбросить. Иначе говоря, A* никогда не упустит возможности минимизировать длину пути, и потому является допустимым.

Предположим теперь, что некий алгоритм B вернул в качестве результата путь, длина которого больше оценки стоимости пути через некоторую вершину. На основании эвристической информации, для алгоритма B нельзя исключить возможность, что этот путь имел и меньшую реальную длину, чем результат. Соответственно, пока алгоритм B просмотрел меньше вершин, чем A*, он не будет допустимым. Итак, A* проходит наименьшее количество вершин графа среди допустимых алгоритмов, использующих такую же точную (или менее точную) эвристику.

Оценка сложности

Временна́я сложность алгоритма A* зависит от эвристики. В худшем случае, число вершин, исследуемых алгоритмом, растёт экспоненциально по сравнению с длиной оптимального пути, но сложность становится полиномиальной, когда эвристика удовлетворяет следующему условию:

<math>|h(x) - h^*(x)| \leq O(\log h^*(x))</math>;

где h* — оптимальная эвристика, то есть точная оценка расстояния из вершины x к цели. Другими словами, ошибка h(x) не должна расти быстрее, чем логарифм от оптимальной эвристики.

Но ещё бо́льшую проблему, чем временна́я сложность, представляют собой потребляемые алгоритмом ресурсы памяти. В худшем случае ему приходится помнить экспоненциальное количество узлов. Для борьбы с этим было предложено несколько вариаций алгоритма, таких как алгоритм A* с итеративным углублением (iterative deeping A*, IDA*), A* с ограничением памяти (memory-bounded A*, MA*), упрощённый MA* (simplified MA*, SMA*) и рекурсивный поиск по первому наилучшему совпадению (recursive best-first search, RBFS).

Напишите отзыв о статье "Алгоритм поиска A*"

Литература

  • Лорьер Ж.-Л. Системы искусственного интеллекта / Пер. с фр. и ред. В. Л. Стефанюка. — М.: Мир, 1991. — С. 238—244. — 20 000 экз, экз. — ISBN 5-03-001408-X.
  • Рассел С. Дж., Норвиг, П. Искусственный интеллект: современный подход = Artificial Intelligence: A Modern Approach / Пер. с англ. и ред. К. А. Птицына. — 2-е изд.. — М.: Вильямс, 2006. — С. 157—162. — 3 000 экз, экз. — ISBN 5-8459-0887-6.
  • Нильсон Н. Искусственный интеллект: методы поиска решений = Problem-solving Methods in Artificial Intelligence / Пер. с англ. В. Л. Стефанюка; под ред. С. В. Фомина. — М.: Мир, 1973. — С. 70 — 80.
  • Dechter, R., Pearl, J. [portal.acm.org/citation.cfm?id=3830&coll=portal&dl=ACM Generalized best-first search strategies and the optimality of A*] // Journal of the ACM. — 1985. — Т. 32, № 3. — С. 505 — 536.
  • Hart P. E., Nilsson, N. J., Raphael, B. A Formal Basis for the Heuristic Determination of Minimum Cost Paths // IEEE Transactions on Systems Science and Cybernetics SSC4. — 1968. — № 2. — С. 100 — 107.
  • Hart P. E., Nilsson, N. J., Raphael, B. Correction to «A Formal Basis for the Heuristic Determination of Minimum Cost Paths» // SIGART Newsletter. — 1972. — Т. 37. — С. 28 — 29.
  • Pearl J. Heuristics: Intelligent Search Strategies for Computer Problem Solving. — Addison-Wesley, 1984. — ISBN 0-201-05594-5.

Ссылки

  • Патрик Лестер. [www2.in.tu-clausthal.de/~zach/teaching/info_literatur/A_Star/A_star_tutorial/aStarTutorial_rus.htm.html Алгоритм A* для новичков] (26 июля 2004). Проверено 12 декабря 2015.
  • [www.gamasutra.com/view/feature/3096/toward_more_realistic_pathfinding.php A* построение пути со сглаживанием и реалистичными поворотами] — Автор Marco Pinter
  • [theory.stanford.edu/~amitp/GameProgramming/ Amit’s Pages] — О поиске пути и A*
  • Cupper. [www.gamedev.ru/articles/?id=70121 Принцип работы алгоритма поиска пути Астар (A*)]. GameDev.ru (17 января 2004 года). Проверено 22 июля 2009. [www.webcitation.org/669rHmDqt Архивировано из первоисточника 14 марта 2012].

Отрывок, характеризующий Алгоритм поиска A*

Ночь была темная, звездная; дорога чернелась между белевшим снегом, выпавшим накануне, в день сражения. То перебирая впечатления прошедшего сражения, то радостно воображая впечатление, которое он произведет известием о победе, вспоминая проводы главнокомандующего и товарищей, князь Андрей скакал в почтовой бричке, испытывая чувство человека, долго ждавшего и, наконец, достигшего начала желаемого счастия. Как скоро он закрывал глаза, в ушах его раздавалась пальба ружей и орудий, которая сливалась со стуком колес и впечатлением победы. То ему начинало представляться, что русские бегут, что он сам убит; но он поспешно просыпался, со счастием как будто вновь узнавал, что ничего этого не было, и что, напротив, французы бежали. Он снова вспоминал все подробности победы, свое спокойное мужество во время сражения и, успокоившись, задремывал… После темной звездной ночи наступило яркое, веселое утро. Снег таял на солнце, лошади быстро скакали, и безразлично вправе и влеве проходили новые разнообразные леса, поля, деревни.
На одной из станций он обогнал обоз русских раненых. Русский офицер, ведший транспорт, развалясь на передней телеге, что то кричал, ругая грубыми словами солдата. В длинных немецких форшпанах тряслось по каменистой дороге по шести и более бледных, перевязанных и грязных раненых. Некоторые из них говорили (он слышал русский говор), другие ели хлеб, самые тяжелые молча, с кротким и болезненным детским участием, смотрели на скачущего мимо их курьера.
Князь Андрей велел остановиться и спросил у солдата, в каком деле ранены. «Позавчера на Дунаю», отвечал солдат. Князь Андрей достал кошелек и дал солдату три золотых.
– На всех, – прибавил он, обращаясь к подошедшему офицеру. – Поправляйтесь, ребята, – обратился он к солдатам, – еще дела много.
– Что, г. адъютант, какие новости? – спросил офицер, видимо желая разговориться.
– Хорошие! Вперед, – крикнул он ямщику и поскакал далее.
Уже было совсем темно, когда князь Андрей въехал в Брюнн и увидал себя окруженным высокими домами, огнями лавок, окон домов и фонарей, шумящими по мостовой красивыми экипажами и всею тою атмосферой большого оживленного города, которая всегда так привлекательна для военного человека после лагеря. Князь Андрей, несмотря на быструю езду и бессонную ночь, подъезжая ко дворцу, чувствовал себя еще более оживленным, чем накануне. Только глаза блестели лихорадочным блеском, и мысли изменялись с чрезвычайною быстротой и ясностью. Живо представились ему опять все подробности сражения уже не смутно, но определенно, в сжатом изложении, которое он в воображении делал императору Францу. Живо представились ему случайные вопросы, которые могли быть ему сделаны,и те ответы,которые он сделает на них.Он полагал,что его сейчас же представят императору. Но у большого подъезда дворца к нему выбежал чиновник и, узнав в нем курьера, проводил его на другой подъезд.
– Из коридора направо; там, Euer Hochgeboren, [Ваше высокородие,] найдете дежурного флигель адъютанта, – сказал ему чиновник. – Он проводит к военному министру.
Дежурный флигель адъютант, встретивший князя Андрея, попросил его подождать и пошел к военному министру. Через пять минут флигель адъютант вернулся и, особенно учтиво наклонясь и пропуская князя Андрея вперед себя, провел его через коридор в кабинет, где занимался военный министр. Флигель адъютант своею изысканною учтивостью, казалось, хотел оградить себя от попыток фамильярности русского адъютанта. Радостное чувство князя Андрея значительно ослабело, когда он подходил к двери кабинета военного министра. Он почувствовал себя оскорбленным, и чувство оскорбления перешло в то же мгновенье незаметно для него самого в чувство презрения, ни на чем не основанного. Находчивый же ум в то же мгновение подсказал ему ту точку зрения, с которой он имел право презирать и адъютанта и военного министра. «Им, должно быть, очень легко покажется одерживать победы, не нюхая пороха!» подумал он. Глаза его презрительно прищурились; он особенно медленно вошел в кабинет военного министра. Чувство это еще более усилилось, когда он увидал военного министра, сидевшего над большим столом и первые две минуты не обращавшего внимания на вошедшего. Военный министр опустил свою лысую, с седыми висками, голову между двух восковых свечей и читал, отмечая карандашом, бумаги. Он дочитывал, не поднимая головы, в то время как отворилась дверь и послышались шаги.
– Возьмите это и передайте, – сказал военный министр своему адъютанту, подавая бумаги и не обращая еще внимания на курьера.
Князь Андрей почувствовал, что либо из всех дел, занимавших военного министра, действия кутузовской армии менее всего могли его интересовать, либо нужно было это дать почувствовать русскому курьеру. «Но мне это совершенно всё равно», подумал он. Военный министр сдвинул остальные бумаги, сровнял их края с краями и поднял голову. У него была умная и характерная голова. Но в то же мгновение, как он обратился к князю Андрею, умное и твердое выражение лица военного министра, видимо, привычно и сознательно изменилось: на лице его остановилась глупая, притворная, не скрывающая своего притворства, улыбка человека, принимающего одного за другим много просителей.
– От генерала фельдмаршала Кутузова? – спросил он. – Надеюсь, хорошие вести? Было столкновение с Мортье? Победа? Пора!
Он взял депешу, которая была на его имя, и стал читать ее с грустным выражением.
– Ах, Боже мой! Боже мой! Шмит! – сказал он по немецки. – Какое несчастие, какое несчастие!
Пробежав депешу, он положил ее на стол и взглянул на князя Андрея, видимо, что то соображая.
– Ах, какое несчастие! Дело, вы говорите, решительное? Мортье не взят, однако. (Он подумал.) Очень рад, что вы привезли хорошие вести, хотя смерть Шмита есть дорогая плата за победу. Его величество, верно, пожелает вас видеть, но не нынче. Благодарю вас, отдохните. Завтра будьте на выходе после парада. Впрочем, я вам дам знать.
Исчезнувшая во время разговора глупая улыбка опять явилась на лице военного министра.
– До свидания, очень благодарю вас. Государь император, вероятно, пожелает вас видеть, – повторил он и наклонил голову.
Когда князь Андрей вышел из дворца, он почувствовал, что весь интерес и счастие, доставленные ему победой, оставлены им теперь и переданы в равнодушные руки военного министра и учтивого адъютанта. Весь склад мыслей его мгновенно изменился: сражение представилось ему давнишним, далеким воспоминанием.


Князь Андрей остановился в Брюнне у своего знакомого, русского дипломата .Билибина.
– А, милый князь, нет приятнее гостя, – сказал Билибин, выходя навстречу князю Андрею. – Франц, в мою спальню вещи князя! – обратился он к слуге, провожавшему Болконского. – Что, вестником победы? Прекрасно. А я сижу больной, как видите.
Князь Андрей, умывшись и одевшись, вышел в роскошный кабинет дипломата и сел за приготовленный обед. Билибин покойно уселся у камина.
Князь Андрей не только после своего путешествия, но и после всего похода, во время которого он был лишен всех удобств чистоты и изящества жизни, испытывал приятное чувство отдыха среди тех роскошных условий жизни, к которым он привык с детства. Кроме того ему было приятно после австрийского приема поговорить хоть не по русски (они говорили по французски), но с русским человеком, который, он предполагал, разделял общее русское отвращение (теперь особенно живо испытываемое) к австрийцам.
Билибин был человек лет тридцати пяти, холостой, одного общества с князем Андреем. Они были знакомы еще в Петербурге, но еще ближе познакомились в последний приезд князя Андрея в Вену вместе с Кутузовым. Как князь Андрей был молодой человек, обещающий пойти далеко на военном поприще, так, и еще более, обещал Билибин на дипломатическом. Он был еще молодой человек, но уже немолодой дипломат, так как он начал служить с шестнадцати лет, был в Париже, в Копенгагене и теперь в Вене занимал довольно значительное место. И канцлер и наш посланник в Вене знали его и дорожили им. Он был не из того большого количества дипломатов, которые обязаны иметь только отрицательные достоинства, не делать известных вещей и говорить по французски для того, чтобы быть очень хорошими дипломатами; он был один из тех дипломатов, которые любят и умеют работать, и, несмотря на свою лень, он иногда проводил ночи за письменным столом. Он работал одинаково хорошо, в чем бы ни состояла сущность работы. Его интересовал не вопрос «зачем?», а вопрос «как?». В чем состояло дипломатическое дело, ему было всё равно; но составить искусно, метко и изящно циркуляр, меморандум или донесение – в этом он находил большое удовольствие. Заслуги Билибина ценились, кроме письменных работ, еще и по его искусству обращаться и говорить в высших сферах.
Билибин любил разговор так же, как он любил работу, только тогда, когда разговор мог быть изящно остроумен. В обществе он постоянно выжидал случая сказать что нибудь замечательное и вступал в разговор не иначе, как при этих условиях. Разговор Билибина постоянно пересыпался оригинально остроумными, законченными фразами, имеющими общий интерес.
Эти фразы изготовлялись во внутренней лаборатории Билибина, как будто нарочно, портативного свойства, для того, чтобы ничтожные светские люди удобно могли запоминать их и переносить из гостиных в гостиные. И действительно, les mots de Bilibine se colportaient dans les salons de Vienne, [Отзывы Билибина расходились по венским гостиным] и часто имели влияние на так называемые важные дела.
Худое, истощенное, желтоватое лицо его было всё покрыто крупными морщинами, которые всегда казались так чистоплотно и старательно промыты, как кончики пальцев после бани. Движения этих морщин составляли главную игру его физиономии. То у него морщился лоб широкими складками, брови поднимались кверху, то брови спускались книзу, и у щек образовывались крупные морщины. Глубоко поставленные, небольшие глаза всегда смотрели прямо и весело.
– Ну, теперь расскажите нам ваши подвиги, – сказал он.
Болконский самым скромным образом, ни разу не упоминая о себе, рассказал дело и прием военного министра.
– Ils m'ont recu avec ma nouvelle, comme un chien dans un jeu de quilles, [Они приняли меня с этою вестью, как принимают собаку, когда она мешает игре в кегли,] – заключил он.
Билибин усмехнулся и распустил складки кожи.
– Cependant, mon cher, – сказал он, рассматривая издалека свой ноготь и подбирая кожу над левым глазом, – malgre la haute estime que je professe pour le православное российское воинство, j'avoue que votre victoire n'est pas des plus victorieuses. [Однако, мой милый, при всем моем уважении к православному российскому воинству, я полагаю, что победа ваша не из самых блестящих.]
Он продолжал всё так же на французском языке, произнося по русски только те слова, которые он презрительно хотел подчеркнуть.
– Как же? Вы со всею массой своею обрушились на несчастного Мортье при одной дивизии, и этот Мортье уходит у вас между рук? Где же победа?
– Однако, серьезно говоря, – отвечал князь Андрей, – всё таки мы можем сказать без хвастовства, что это немного получше Ульма…
– Отчего вы не взяли нам одного, хоть одного маршала?
– Оттого, что не всё делается, как предполагается, и не так регулярно, как на параде. Мы полагали, как я вам говорил, зайти в тыл к семи часам утра, а не пришли и к пяти вечера.
– Отчего же вы не пришли к семи часам утра? Вам надо было притти в семь часов утра, – улыбаясь сказал Билибин, – надо было притти в семь часов утра.
– Отчего вы не внушили Бонапарту дипломатическим путем, что ему лучше оставить Геную? – тем же тоном сказал князь Андрей.
– Я знаю, – перебил Билибин, – вы думаете, что очень легко брать маршалов, сидя на диване перед камином. Это правда, а всё таки, зачем вы его не взяли? И не удивляйтесь, что не только военный министр, но и августейший император и король Франц не будут очень осчастливлены вашей победой; да и я, несчастный секретарь русского посольства, не чувствую никакой потребности в знак радости дать моему Францу талер и отпустить его с своей Liebchen [милой] на Пратер… Правда, здесь нет Пратера.
Он посмотрел прямо на князя Андрея и вдруг спустил собранную кожу со лба.
– Теперь мой черед спросить вас «отчего», мой милый, – сказал Болконский. – Я вам признаюсь, что не понимаю, может быть, тут есть дипломатические тонкости выше моего слабого ума, но я не понимаю: Мак теряет целую армию, эрцгерцог Фердинанд и эрцгерцог Карл не дают никаких признаков жизни и делают ошибки за ошибками, наконец, один Кутузов одерживает действительную победу, уничтожает charme [очарование] французов, и военный министр не интересуется даже знать подробности.
– Именно от этого, мой милый. Voyez vous, mon cher: [Видите ли, мой милый:] ура! за царя, за Русь, за веру! Tout ca est bel et bon, [все это прекрасно и хорошо,] но что нам, я говорю – австрийскому двору, за дело до ваших побед? Привезите вы нам свое хорошенькое известие о победе эрцгерцога Карла или Фердинанда – un archiduc vaut l'autre, [один эрцгерцог стоит другого,] как вам известно – хоть над ротой пожарной команды Бонапарте, это другое дело, мы прогремим в пушки. А то это, как нарочно, может только дразнить нас. Эрцгерцог Карл ничего не делает, эрцгерцог Фердинанд покрывается позором. Вену вы бросаете, не защищаете больше, comme si vous nous disiez: [как если бы вы нам сказали:] с нами Бог, а Бог с вами, с вашей столицей. Один генерал, которого мы все любили, Шмит: вы его подводите под пулю и поздравляете нас с победой!… Согласитесь, что раздразнительнее того известия, которое вы привозите, нельзя придумать. C'est comme un fait expres, comme un fait expres. [Это как нарочно, как нарочно.] Кроме того, ну, одержи вы точно блестящую победу, одержи победу даже эрцгерцог Карл, что ж бы это переменило в общем ходе дел? Теперь уж поздно, когда Вена занята французскими войсками.