8. к=к+1, Н=1 и если 1<Я то к п. 2, иначе за решение задачи принимается вектор Х к~1. Таким образом, работа алгоритма сводится к последовательной замене единичной компоненты найденного решения (вектора л ) на нулевую, при этом случайным образом выбранной нулевой компоненте присваивается единичное значение (вектор X’кч). Целенаправленность в работе алгоритма получена за счет возврата к предыдущему вектору (Хк) при неудачной замене компонент. |
„*+1 Pi 0, если Xj = 1с X k, j = I; 1, если х; = 1c X k,j ф I; —.если x. =\ k = k + l, H=1 и если e 2, иначе за ре ш е н и е задачи приним ается вектор Х*~‘. Таким образом, работа алгоритма сводится к последовательной замене единичной компоненты найденного решения (вектора X*) на нулевую, при этом случайным образом выбранной нулевой компоненте присваивается единичное значение (вектор Х*+/). Целенаправленность в работе алгоритма получена за счет возврата к предыдущему вектору (X*) при неудачной замене компонент. Для реализации алгоритмов может быть взят любой из современных языков программирования. От того, какой именно алгоритмический язык будет выбран, во многом зависит эффективность программной реализации. В частности представление кода значительно влияет на скорость обработки данных, их представление в памяти машины, интерфейс работы с памятью и т.д. От структуры и синтаксиса языка зависит то, насколько “близко” и точно программа будет отражать алгоритм [86]. Для разработки был выбрана среда быстрой разработки приложений Borland C++ Builder 6.0 по следующим соображениям: поддержка средой класса векторов булевых переменных, что значительно упрощает работу с булевыми переменными и обеспечивает корректное их представление с точки зрения предметной области; несмотря на то, что C++ объектно-ориентированный язык низкого уровня, его структурность поддерживает написание программ “близко к тексту” исходного алгоритма; достаточно легкая интегрируемость написанных в данной среде приложений с существующими форматами баз данных. 128 |