Page 273 - Bkhargava_-_Grokaem_algoritmy
P. 273

272    Глава 11.  Что дальше?


        Алгоритм Диффи-Хеллмана продолжает применяться на практике вместе
        с его наследником RSA.  Если вы интересуетесь криптографией, алгоритм
        Диффи-Хеллмана станет хорошей отправной точкой: он элегантен и не
        особо сложен.



        Линейное программирование

        Самое лучшее я приберег напоследок. Линейное программирование - одна
        из самых интересных областей, которые мне известны.

        Линейное программирование используется для максимизации некоторой
        характеристики при заданных ограничениях. Предположим, ваша компа­
        ния выпускает два продукта: рубашки и сумки. На рубашку требуется 1 м
        ткани и 5 пуговиц. На изготовление сумки необходимо 2 м ткани и 2 пуго­
        вицы. У вас есть 11  м ткани и 20 пуговиц. Рубашка приносит прибыль $2,
        а сумка - $3. Сколько рубашек и сумок следует изготовить для получения
        максимальной прибыли?
        Здесь мы пытаемся максимизировать прибыль, а ограничения определяют

        количество имеющихся материалов.
        Другой пример: вы политик, пытающийся получить максимальное ко­
        личество голосов. Исследования показали, что на каждый голос жителя
        Сан-Франциско требуется примерно час работы (маркетинг, . rсследования
        и т. д. ), а на каждый голос жителя Чикаго - 1,5 часа. Вам нужны голоса
        как минимум 500 жителей Сан-Франциско и как минимум 300 жителей
        Чикаго. В вашем распоряжении 50 дней. Кроме того, затраты на жителя
        Сан-Франциско составляют $2, а на жителя Чикаго - $1.  Ваш бюджет
        составляет $1500.  Какое максимальное количество голосов вы сможете
        получить (Сан-Франциско+ Чикаго)?

        На этот раз вы стремитесь к максимуму голосов при ограничениях по вре­
        мени и деньгам.

        Возможно, вы думаете: ~в этой книге много говорилось о вопросах оптими­
        зации. Как они связаны с линейным программированием?» Все алгоритмы,
        работающие с графами, могут быть реализованы средствами линейного
        программирования. Линейное программирование - намного более общая
        область, а задачи с графами составляют ее подмножество.



                                                         www.trk.kg
   268   269   270   271   272   273   274   275   276   277   278