Основные разделы


Алгоритм основной программы

На рисунке 4.2 показана блок-схема алгоритма первого этапа, реализованного в системе Delphi.

В данной схеме переменные М, List2 - объектного типа. Они содержат в себе список строк, а так же свойства и методы, предназначенные для работы со списком. Переменная М содержит исходный список векторов, а List2 предназначен для хранения полученных субпоследовательностей. Переменные i, j, L - целочисленного типа, i используется как счетчик, в j хранится индекс начального вектора, L используется для сравнения длинны субпоследовательности, полученной с различными начальными векторами.

В алгоритме используется подпрограмма GetSubSeq, с тремя параметрами. Первый параметр представляет собой список и должен содержать исходный список векторов. Второй параметр - это строка, содержащая первый вектор искомой субпоследовательности. Третий параметр - список к которому будет добавлена найденная субпоследовательность. Векторы, вошедшие в субпоследовательность удаляются из исходного списка.

Операторы с 4 по 8 составляют тело цикла, в котором отыскивается наилучший начальный вектор для первой субпоследовательности. Критерий качества этого вектора - максимально возможная длина первой субпоследовательности. В блоке 4 запоминается i-й вектор из исходного списка в переменную Sample, удаляется i-й вектор из исходного списка, очищается список, предназначенный для сохранения результата. В переменной L сохраняется длина субпоследовательности, полученная для предыдущего начального вектора. На первом проходе цикла L = 0. Оператор 6 выполняет переход по ветви "Да", если длина субпоследовательности для текущего начального вектора больше, чем для предыдущего, в этом случае запоминается улучшенный результат (блок 7). В результате в переменной Sample2 останется наилучший начальный вектор для первой субпоследовательности.

В блоке 9 выполняется поиск индекса вектора Sample2 в исходном множестве, а затем этот индекс удаляется. Это нужно для того, чтобы данный вектор не повторился дважды в первой субпоследовательности. После выполнения блока10, в List2 запоминается первая субпоследовательность. Далее, построение остальных субпоследовательностей происходит в цикле, условием выхода из которого (блок 11) является отсутствие неиспользованных векторов в исходном множестве.

Прочитайте еще и эти статьи:

Технология сотовой связи в стандарте GSM
Сотовая связь - один из видов мобильной радиосвязи, в основе которого лежит сотовая сеть. Ключевая особенность заключается в том, что общая зона покрытия делится на ячейки (соты), определяющиеся зонами покрытия отдельных базовых ...

Многофункциональный прибор для учебного автомобиля
В наше время в связи с развитием электроники вообще и автомобильной электроники в частности ставится задача создания многофункционального прибора для учебного автомобиля, которая включает в себя задачи точного измерения и индикации параметров ра ...

© Copyright 2020 | www.techattribute.ru