Найти тему
Журнал "Лучик"

Зачем нужны математики, или Что такое «оптимизация» на самом деле?

В наши дни «оптимизация» – слово страшное, жуткое, ругательное. Его все боятся, как огня. «Оптимизация» – значит что-то-то закроют, кого-то сократят, кому-то срежут зарплату, а цены поднимут. Тьфу!

Однако несправедливо это. Хорошую на самом деле науку обидели, интересную! Тут как с радугой получилось... Ну, уточнять не будем.

Слово «оптимизация» происходит от латинского «оптимус» («optimus»), то есть «наилучший». Отсюда же слово «оптимист» – то есть жизнерадостный человек, который всегда верит в лучшее. Всегда. А что же за наука? А наука называется «теория оптимизации», а более официально – «математическое программирование».

В данном случае слово «программирование» не имеет ничегошеньки общего с уроками информатики, Паскалем и Бейсиком. Это результат давнишнего не очень правильного перевода с английского языка.

По-английски «programming» означает не только «программирование», но и «планирование». Правильнее было назвать эту дисциплину «математическое планирование», но, что называется, «переводчик накосячил, а все стали повторять». И началось – «математическое программирование», «линейное программирование», «выпуклое программирование», «целочисленное программирование»... Вот так теперь бедолаги-математики с этим и живут.

А вообще – наука очень интересная, современная, актуальная. В которой совместно работают и логика, и математический анализ, и теория экстремумов, и теория приближений, и кибернетика, и численные методы. И задачи решаются очень даже «жизненные», вполне понятные простому человеку – даже школьнику! Да-да-да, математическое программирование – это одна из немногих областей высшей математики, задачи которой вполне способны понять даже первоклассники! Хотите примеры?

Ну, например – «задача о рюкзаке». Вася собрался в поход. У него есть рюкзак с неким объемом, скажем, 20 литров. И есть самые разные вещи – свитер и тёплые носки, тапочки, консервы и крупа, сухари, конфеты и пряники, чай и сахар, кружка с тарелкой и ложкой, маленький котелочек, складной нож, мяч, надувной круг и маска с трубкой для плавания, какие-то игрушки и книжки, бинокль... да всё подряд! И каждая вещь занимает определённый объём. Вопрос: как уложить вещи в рюкзак так, чтобы уместилось как можно больше вещей? Если рюкзак «не резиновый»?

-2

А вот другая задача – «задача о краже драгоценностей». Хитроумный преступник Джексон ночью пробрался в ювелирный магазин, чтобы осуществить кражу века. У него есть маленькая сумочка, в которой можно унести строго определённый вес, например, 1 килограмм. В магазине на витринах выложено огромное количество драгоценностей. Вопрос: какие драгоценности должен украсть Джексон, чтобы при максимально допустимом весе (не больше 1 килограмма) их стоимость (ценность) была максимальной?

Ещё? Пожалуйста! «Задача о путешественниках». Лена с папой и мамой во время каникул отправляются в большое путешествие по городам России. У них есть список городов, список автобусов и поездов, список экскурсий и достопримечательностей, список гостиниц с указанием стоимости... Вопрос: как составить маршрут путешествия так, чтобы посетить все города из списка и посмотреть как можно больше достопримечательностей, потратив при этом минимальную сумму денег?

-3

Мало? Отлично, вот вам «Школьная задача». У школы – большое четырёхэтажное здание, этажи соединены лестницами. Есть определённое количество классных комнат, сколько-то детей и сколько-то учителей. Как составить расписание уроков таким образом, чтобы маршрут, то есть «длина пробега» по коридорам и лестницам между классами, для всех учеников и учителей был максимально удобным, а время занятий – минимальным и без «окон» («пустых уроков»)?

А вот «Задача из кружка судомоделирования». Ребята с руководителем задумали сделать большую и сложную модель катера. Через интернет можно купить самые разные микродвигатели – у них разная мощность, разный вес, разный размер, разная надёжность и разная цена. Какие двигатели выбрать для модели, чтобы добиться максимальной скорости на воде при минимуме затраченных денег? Что лучше – установить один мощный двигатель, или два послабее, но подешевле? А может быть выгоднее поставить три или четыре ещё более недорогих? Вот и решай...

Вы думаете, это все возможные задачи, которыми занимается математическое программирование, то есть теория оптимизации? Совершенно нет. Как развезти товары со складов по магазинам – так, чтобы транспортные расходы были минимальны? Как распределить работу разных станков в цехе на заводе – так, чтобы обеспечить максимальный объём производства? Какие маме купить продукты для того, чтобы приготовить как можно больше разных вкусных блюд на Олин день рождения, и при этом уложиться в заданный бюджет? Как программисту составить программу для решения какой-то практической задачи – так, чтобы при этом было затрачено минимальное время?

-4

«А как можно решать одну и ту же задачу так, чтобы было затрачено разное время?» – можете спросить вы. Да, человеку свойственно думать, что правильное решение у задачи может быть только одно, или что все правильные решения равнозначны – если они правильные. Но это не так! Смотрите.

Вспомним совсем-совсем далёкое раннее детство и любимую игрушку – пирамидку с разноцветными колечками. С каким упорством малыши учатся собирать пирамидку правильно – чтобы все колечки были нанизаны на стержень строго по размеру, не так ли?

-5

В математике такая задача называется «задачей о сортировке». И решают её не только малыши! На том же производстве бывает нужно сортировать разные детали по размеру, по весу, по классу точности... Потому что даже если мы делаем абсолютно одинаковые детали – скажем, диоды или транзисторы для электронных схем – они никогда не будут абсолютно одинаковыми. Одно дело – «расставить по порядку» десяток колечек на пирамидке, другое – отсортировать, скажем, миллион деталей. Или миллиард чисел в таблице...

-6

Оказывается, учёные и программисты придумали десятки методов (алгоритмов) той самой сортировки, «сборки пирамидки». Пузырьковая сортировка, плавная сортировка, битонная сортировка, LSD-сортировка, быстрая сортировка, поразрядная сортировка, сортировка методом вставки, коктейльная (шейкерная) сортировка, блочная сортировка, гномья сортировка, сортировка деревом... И это даже не четверть списка.

В замечательной книге «Искусство программирования» американского учёного Дональда Кнута разным приёмам – алгоритмам – сортировки посвящён целый том (толстенный!). И результаты работы этих алгоритмов могут очень здорово отличаться. Скажем, быстрая сортировка или сортировка вставками «в среднем» работают в несколько раз быстрее сортировки «пузырьками» или «коктейлем».

«Ну, это ерунда! – может сказать кто-то. – Какая мне разница, решал мой компьютер задачу по сортировке таблицы 1 секунду или 3 секунды?». Это верно. Пока речь идёт только про мой компьютер, маленькие таблицы, простенькие задачи и считанные секунды, оптимизация (математическое программирование) может и не понадобиться. Проще и быстрее «в лоб», «методом научного тыка» – в точности, как малыш, собирающий пирамидку. Но вот когда «на кону» оказываются тысячи километров пути, десятки тысяч тонн грузов, мегаватты электроэнергии – вот тут оптимизация может дать миллионы (и даже миллиарды!) рублей экономии при совершенно том же самом результате.

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

-7
-8

-9

Другие отзывы родителей о журнале можно почитать здесь. Журнал "Лучик" продаётся на Wildberries. Подписка на журнал (значительно дешевле) возможна через Почту России