10. Как Это делается?

                ЭТАПЫ СОЗДАНИЯ И РЕАЛИЗАЦИИ АЛГОРИТМА

  Важность создания новых алгоритмов и особенности качеств личности их создателей ярко отражены в словах академика РАН, профессора МГУ и МФТИ  Ю.И. Журавлева «…если взять три основных направления – hardware (конструирование и производство аппаратной части ЭВМ),  software (разработка прикладного программного обеспечения),  brainware (создание новых алгоритмов), - то в первом мы, безусловно, отстали… А с  software понимаете какая история?
  Мне многократно приходилось работать над крупными прикладными проектами – не любят наши люди делать серийный софтвер, как и вообще что бы то ни было серийное. Ну, скучно им. У нас, например, хорошие софтверные программисты почти все были дамы. У дам это как-то получается, это как гладью вышивать. В то же время у наших конкурентов, особенно восточных и южно-американских, это тоже как-то не идет. Думаю, что рано или поздно мы в этот рынок войдем, но завоюем лишь небольшую часть.
  Вот вы посмотрите на национальное китайское ремесло – внутрь бутылки загнать какую-нибудь фигурку, человек сидит и десять лет вытачивает эдакую штучку. Китайцы привыкли к кропотливому, долго длящемуся и не очень интенсивному труду. Вот это национальный характер. Национальный не в смысле национальности, а в смысле характерных черт популяции, проживающей в определенный зоне земного шара в определенный исторический промежуток времени. Если хотите, национальный в Гумилевском смысле.
  Выкручиваться нестандартным и достаточно эффективным образом  при минимальных ресурсах и в кратчайшее время – одно из главных преимуществ нашего национального характера, и наше главное конкурентное преимущество. Поэтому научная, исследовательская деятельность для населения вот этой, нашей части земли – из вещей, которые очень нравятся.
  Ведь создание brainware – это настоящее искусство. В алгоритм очень много вложено. Здесь квалификация нужна повыше, здесь надо долго учиться, да еще и голову иметь специальную. Программированию можно научить почти любого человека -  brainware любого не научишь».
  Дополняя точку зрения академика РАН Ю.И. Журавлева, приведем один, на наш взгляд, весомый аргумент из результатов исследований  А.Е. Самойлова, который изучал деятельность инженеров, чинящих компьютеры .
  Эти специалисты образовали три достаточно стойких группы. Только в одной, где было около трети участников, задачи решались оптимально правильно и в простых, и в сложных ситуациях. Больше половины специалистов действовала оптимально лишь в простых ситуациях, с более сложными случаями по большей части не справлялись, систематически игнорируя часть существенных признаков. Противоположное (на первый взгляд, парадоксальное качество) замечено среди представителей третьей группы, приблизительно у каждого шестого из тех, кто принимал участие в эксперименте: они прекрасно работали, натолкнувшись на сложные ситуации, имея же дело с более простыми, прибегали к лишним осложнениям, считая, что и в них имеются такие дополнительные, усложняющие ситуацию признаки, которых фактически не существовало.
   Перечислим главные этапы создания и реализации алгоритма:
1) уяснение и постановка задачи;
2) возникновение идеи ее решения;
3) разработка алгоритма решения задачи;
4) проверка «вручную», на элементарном примере, правильности алгоритма;
5) программирование алгоритма на доступном формальном языке;
6) отладка программы;
7) анализ результатов контрольных прогонов;
8) формализация алгоритма.
  Проиллюстрируем основные из этих этапов на примере разработки алгоритма поиска элементарных кодов (ПЭЛК), созданного автором данной монографии.
  Идея алгоритма, чаще всего в виде инсайта, может возникнуть совершенно неожиданно и не за рабочим столом, а в любом, самом неподходящем на первый взгляд месте. Но при одном обязательном  условии – концентрация мысли и многократные попытки решения проблемы в течение длительного времени.
  Вспомним Архимеда, с криком «Эврика!», выпрыгнувшего из ванны, Д.И. Менделеева, которому приснилась периодическая система химических элементов, или, в более близкие нам времена, авиаконструктора О.Н. Антонова, который, обязательно, на ночной столик клал блокнот и авторучку. Вдруг ночью приснится что – нибудь этакое, важное. И, самое главное, снилось!  До момента возникновения инсайта все они, концентрируя внимание на одной проблеме, долгое время делали безуспешные попытки решить очень важную для себя задачу.          
  Автору лучшие его алгоритмы приходили в голову, например, в общественном транспорте. В Харькове, где в это время жил автор, в отсутствии метрополитена, время проезда из спальных районов города, где в основном проживали студенты и молодые ученые, до центра города, где находились, да и сейчас находятся, основные научные учреждения и вузы, насчитывало часы.
  Плотность упаковки пассажиров  в часы пик в троллейбусах, автобусах и трамваях была такова, что поднять руку иногда было невозможно. Можно было только дышать и думать. Идея алгоритма, описанного ниже и решающего поставленную задачу в самом общем виде, пришла автору в голову именно в переполненном трамвае.
  Задача была поставлена (вспомните хорошо известную в научных кругах фразу – «Правильно поставить задачу - это значит наполовину ее решить») доктором технических наук, профессором А.Ф. Сушко в течение трёх минут. Ее окончательное решение потребовало от автора около двух лет интенсивной работы. Результаты работы представлены в статье «Алгоритм анализа таблиц признаков», и в описании авторского свидетельства на изобретение «Цифро-аналоговый преобразователь и способ его настройки».
Аналого - цифровые (аналог – код) и цифро - аналоговые (код – аналог) преобразователи (АЦП и ЦАП), конструированием которых занимались сотрудники научно-исследовательской лаборатории ХИРЭ под руководством проф. Сушко А.Ф. – это основа, база для любой современной, столь привычной сейчас, цифровой техники согласования нашего восприятия и нашего желания все отслеживать и всем управлять. Например за природой – слежение за погодой и управление ею, или второй природой – техникой т.е. производственными процессами. Процессы, которыми мы пытаемся управлять, носят, в основном, непрерывный характер (аналоговый): течение времени, электрического тока, воды, колебаний температуры или атмосферного давления, голоса певца, звучания музыкального инструмента и т.д. и т.п.
ЦАП и АЦП применяются в настоящий момент повсюду, начиная с привычной уже нам бытовой техники: ручных часов, телевизоров, лазерных проигрывателей и т.д., и, заканчивая сложнейшей техникой обеспечения любых измерений и отображения информации в науке и промышленной технике ХХI века: цифровых измерительных приборов, томографов, электронных микроскопов и т.д., а также любых,  самых простых, сложных и сложнейших автоматизированных и автоматических систем управления любыми процессами.
В процессе решения поставленной профессором А.Ф. Сушко задачи, автором были выдвинуты идеи, послужившие основой для успешной защиты двумя студентами Харьковского национального университета радиоэлектроники (ХНУРЭ) дипломов инженеров-математиков. От этих идей пришлось в итоге отказаться, в связи с тем, что они были слишком громоздкими, а программы, их реализующие, содержали много сотен операторов, требовали длительного  времени работы ЭВМ, но, самое главное, не давали возможности решить поставленную задачу в общем виде.
А в постановке задача звучала очень просто:
«Необходимо в  матрице (таблице чисел), строки которой содержат только числа 0 и 1, найти такие ее строки, которые нельзя получить путем логического сложения никакого количества любых других строк матрицы».
Математическая операция логического сложения несколько отличается по результатам от хорошо известной нам из элементарной математики операции сложения чисел в столбик (кстати, с использованием алгоритма сложения многозначных чисел узбекского ученого Аль – Хорезми).
В логическом сложении, также как в арифметическом сложении:  0 + 0 = 0; 0 + 1 = 1; 1 + 0 = 1;  но 1 + 1 = 1.
В постановке, с виду просто решаемой задачи, был один нюанс, подводный камень. Если для размерностей матрицы N ; N, где N имеет точно обозначенную числовую границу, т.е. N = Const, эту задачу можно решать, что называется «в лоб», методом перебора, то в общем случае, когда  N стремится к бесконечности, т.е. не имеет ограничений в размерности, сделать это перебором просто невозможно.
Две идеи, оформившиеся у автора в сознание совершенно неожиданно, в трамвае и названные – «частичное противоречие по нулю» (ЧПН), и «частичное противоречие по единице» (ЧПЕ), их смысл будет понятен несколько позже, решили проблему. Появились эти идеи только после почти двухлетнего рассматривания матриц [0,1]  и мало результативных попыток манипуляций с ними.
Решение, как всегда после его нахождения, оказалось очень простым. На сегодня, программа его реализующая, требует всего полтора десятка операторов языка СИ++. Задача, с помощью этого алгоритма, решалась в общем случае, т.е. при N стремящемся к бесконечности..
Для описания найденного алгоритма в следующей нашей публикации придется перейти на достаточно простой язык математической логики и высшей алгебры.

См. продолжение в других частях монографии "Микроструктурирование мышления ..." в этом же разделе моей страницы.


Рецензии