Доктор физико-математических наук, профессор Леонид Соколинский вывел формулу, которая еще на начальной стадии разработки проекта позволит оценить «рабочий ресурс» моделирования событий у так называемых параллельных алгоритмов. Это итог четырехлетних исследований ученого в лаборатории суперкомпьютерного моделирования ЮУрГУ. По словам профессора, такие программы на основе сложных численных алгоритмов могут совершить переворот во многих сферах. К примеру, с их можно отслеживать изменения котировок акций компаний на крупнейших фондовых биржах, делать прогноз и покупать те, что скоро взлетят в цене. Программы решать многофакторные логистические задачи при построении маршрутов доставки и хранения грузов, для составления наилучшего расписания авиаперелетов. Для этого применяют мощные суперкомпьютеры, создаются параллельные алгоритмы одновременно работать на множестве процессоров.
«Современная наука, экономика и промышленность требуют решения оптимизационных задач огромной вычислительной сложности, — говорит Леонид Соколинский. — К примеру, как выстроить работу всех светофоров в городе, чтобы избежать пробок, скопления транспорта. Для этого сегодня приходится писать сложный алгоритм, разбивать его на параллельные части, которые запускают на разных процессорах. Если же при создании параллельного алгоритма допущена ошибка, не даже суперкомпьютер».
По мнению экспертов, параллельные алгоритмы могут сделать прорыв и в фундаментальной науке. Например, в физике, для решения сложнейших задач, связанных с теоремой Белла: как влияют «скрытые факторы» на поведение квантовой частицы.
По словам профессора, для оценки нового алгоритма сегодня приходится проводить множество экспериментов, запустив готовую параллельную программу на компьютере. Но зачастую оказывается, что алгоритм неэффективен, в него нужно вносить изменения или разрабатывать новый. Поэтому ученый предложил новую модель параллельных вычислений, проверяющую алгоритм еще до начала программирования. Это намного сокращает время на разработку программ, позволяет внести коррективы еще до написания программы.
«Мы поставили амбициозную цель создать такую модель параллельных вычислений, которая позволила бы на самой ранней стадии разработки алгоритма, без запуска на суперкомпьютере, не тратя на это время и деньги, сделать вывод, есть ли смысл подключать «электронный мозг», — подытожил Леонид Соколинский. — Наша формула позволяет, имея всего лишь карандаш, лист бумаги и калькулятор, понять, окажется ли эффективным тот или иной алгоритм, дать точную оценку его прогнозируемой масштабируемости, применения в самых разных сферах».
Как добавил ученый, у разработки будет продолжение. Он планирует на основе этой модели создать некий «программный каркас» — единый шаблон, при которого можно будет в разы ускорить создание параллельных алгоритмов для решения сложнейших задач прогнозного программирования.
вроде так
program restoran;
var
first, second, third, fourth: integer;
first_tip, second_tip, third_tip, fourth_tip, amount: real;
begin
amount := 0;
read(first, second, third, fourth);
first_tip := first / 100 * 15;
second_tip := second / 100 * 15;
third_tip := third / 100 * 15;
fourth_tip := fourth / 100 * 15;
amount := first_tip + second_tip + third_tip + fourth_tip;
write(amount);
end.
Объяснение:
program restoran; // Название программы
var
first, second, third, fourth: integer; // Создание целочисленных переменных, отвечающих за счёт, на который пообедали гости
first_tip, second_tip, third_tip, fourth_tip, amount: real; // Создание вещественных (с плавающей точкой) переменных, отвечающих за размер чаевых и сумму чаевых соответственно
begin // Начало программы
amount := 0; // Сумма = 0
read(first, second, third, fourth); // Считываем значения счетов каждого гостя с клавиатуры
first_tip := first / 100 * 15; // Чаевые с первого счета
second_tip := second / 100 * 15; // Чаевые со второго счета
third_tip := third / 100 * 15; // Чаевые с третьего счета
fourth_tip := fourth / 100 * 15; // Чаевые с четвертого счета
amount := first_tip + second_tip + third_tip + fourth_tip; // Сумма чаевых
write(amount); // Вывод суммы
end. // Конец программы