книги из ГПНТБ / Митрофанов, С. П. Автоматизация технологической подготовки серийного производства
.pdf
|
|
|
|
Таблица 22 |
Кодировочная |
таблица размерностей и видов характеристик |
|||
|
Размерность или вид характеристики |
Код |
||
Размерность или вид не заданы |
|
00 |
||
|
безразмерные чи- |
Натуральное |
01 |
|
|
ела |
|
Целое |
02 |
|
|
|
Действительное |
03 |
Вид |
Адрес (ссылка) на другие массивы |
04 |
||
|
фразы |
с числом |
Не более 6 |
05 |
|
СИМВОЛОВ |
Не более 12 |
06 |
|
|
|
|
Миллиметр |
10 |
|
линейная |
Метр |
11 |
|
|
|
|
Километр |
12 |
|
|
|
Грамм |
15 |
Размерность |
силы |
|
Килограмм |
16 |
|
|
|
Тонна |
.17 |
|
|
|
Квадратный сантиметр |
20 |
|
площади |
Квадратный метр |
21 |
|
Код наименования характеристики может быть образован различными методами кодирования. Применение кодов наимено ваний характеристик, независимо от способа выражения после дних на внешних языках различных подсистем, позволяет обра щаться к ИПС на едином внутреннем языке описания характе ристик объектов, а значит, единообразным способом выражать свои требования (по каким характеристикам необходимо вести поиск и какие характеристики требуется получить на выходе ИПС). Следовательно, при организации ИПС необходимо изучить существующий состав признаков, их классификацию и на этой основе составить кодировочные таблицы (словари) наименований признаков. Такие словари являются базой для создания трансля торов внешних языков различных подсистем.
Рассмотрим методы организации массивов в памяти ЭВМ. Сообщение с описанием объекта, представленное внутри машины будем называть записью объекта. Каждая запись может быть разделена на поля, т. е. на определенные совокупности симво-
132
лов, имеющие смысловое значение. Например, какой-либо признак объекта может занимать два поля, в одно записывается наименова ние характеристики, а в другое — ее значение. Полями с фикси рованной длиной или просто фиксированными полями будем назы вать поля, которые могут содержать не более заданного числа символов. Сами записи также могут быть фиксированной длины (т. е. всегда содержать одно и то же число символов) или произ вольной длины.
Существуют четыре основных способа организации массивов [13]: последовательно-смежный; цепной; с ветвящейся структу рой; списковой структуры. Последовательно-смежный способ заключается в том, что за п-й записью непосредственно следует п + 1-я запись. Такой метод позволяет создавать довольно про стые программы обработки информации и хранить записи в ком пактной форме, что способствует экономии объема памяти ЭВМ. В общем случае запись произвольной формы с полями переменной длины и произвольным количеством характеристик выглядит так:
Поле
*1 К П |
Х ‘ 1 К П * 2 |
К П х ‘г |
К П |
Х п К П |
К П |
К З |
|
|
|
|
|
|
|
|
(4) |
Здесь |
X я |
х — соответственно |
наименование и значение ха |
||||
рактеристики, |
КП и |
КЗ — обозначения символов «конец |
поля» |
||||
и «конец записи объекта». |
поля |
и конца записи |
используют |
||||
Для |
нахождения |
конца |
|||||
специальные символы типа «:», «;», «,», «=», «.», .«*», «X», которые ставят в конце наименования признака, его значения и в конце записи объекта. Если используются поля фиксированной длины при произвольном количестве характеристик в описании объекта, символы «конец поля» не нужны:
Поле |
|
|
|
|
|
*1 |
*‘1 |
*2 |
Х п |
*1п |
К З |
При использовании |
фиксированных |
полей |
применение фраз |
||
с переменной длиной приводит к нерациональному расходу па мяти, так как длину поля необходимо выбирать по фразе макси мальной длины. Поэтому нужно кодировать признаки, представ ляя их в виде кодов или коротких фраз (шифров), не превыша ющих выбранную длину поля. При заданном количестве фикси
рованных полей длина записи становится постоянной |
и символ |
||
«конец записи» не нужен: |
|
|
|
Х г |
x i L х 2 |
Х п |
(6) |
133
Последовательность записи характеристик в этом случае может быть произвольной («плавающей»). Если определенные характеристики закрепить за определенными полями, в которые заносить лишь значения характеристик, то запись объекта будет выглядеть так:
* < 1 |
* г 2 |
* ‘ п |
(7) |
Это наиболее простой и во многих случаях наиболее компакт ный способ представления информации об объекте, поэтому на внутреннем языке ее оформляют в виде записи фиксированной длины и с фиксированными полями. Последовательность распо ложения характеристик и их наименования (т. е. структура за писи) при описании объекта по типу (7) может быть задана в явном виде
* 1 |
* 2 |
Х п |
(8) |
или в неявном. В последнем случае структура записи может быть опознана только специальной программой обработки массива,
вкоторой учтено, какое поле под какую характеристику отведено. Для создания универсальных программ, не привязанных к какимлибо массивам, необходимо выражать структуру записи объекта
вявном виде. Тогда программа может самостоятельно определить,
вкаких полях и какие зафиксированы характеристики, каково их значение. При табличном описании объекта, имеющего не сколько подобъектов с одинаковым набором характеристик в виде выражения (3), головку таблицы можно оформить как запись структуры подобъекта, в которой фиксируется, какой столбец под какую характеристику отводится. Описание объекта будет состоять из записи структуры подобъекта типа (8) и матрицы значений вида
Xh |
х к |
ХЫ |
Xi \ |
Xio |
x i n |
(9)
X k x |
х ч |
x kn |
Внутри массива эти записи одна относительно другой могут располагаться упорядоченным или неупорядоченным образом. В последнем случае их записи объектов размещают последова-
134
тельно по мере поступления, начиная с начала массива. Возможен вариант последовательного занесения записей в массив и от конца к началу. При упорядоченной организации массива записи рас полагают в порядке возрастания или убывания значения какойлибо характеристики, называемой ключевым словом. Если, на пример, в качестве такого слова взята характеристика НОМЕР ЧЕРТЕЖА ДЕТАЛИ, то записи с описанием детали будут располагаться в порядке возрастания (убывания) номера чертежа детали, т. е. у каждой последующей записи значение номера чертежа будет больше (меньше), чем у предыдущей. Возможен выбор ключевых слов по нескольким характеристикам. Например, описание технологических операций может быть упорядочено по номеру цеха и коду оборудования, на котором выполняется опе рация. Ключевое слово в этом случае состоит из двух характе ристик: НОМЕР ЦЕХА, КОД ОБОРУДОВАНИЯ. Записи, упорядоченные по значению данного ключевого слова, распо лагаются в порядке возрастания числа, выражающего номер цеха. Внутри группы с одинаковым номером цеха записи идут в порядке возрастания кода оборудования. Следовательно, весь массив будет разделен на группы, внутри которых записи имеют одинаковый номер цеха и код группы оборудования. Если массив упорядочен по одной характеристике, а поиск идет по другой то по отношению к последней массив является неупорядоченным.
Наиболее простым методом поиска при последовательно-смежном способе организации массивов является последовательный перебор (просмотр) записей. В этом случае по каждой записи соответству ющие ее элементы сравнивают с ключевым словом. Если значение характеристик, заданных в ключевом слове (или просто значение ключевого слова), совпадает со значением одноименных им ха рактеристик записи, то запись считают найденной, и в зависимости от поставленной задачи либо запоминают ее адрес, либо всю ее (а при необходимости отдельные характеристики) переписывают во вспомогательный массив. Далее поиск можно продолжить, если его ведут по полному массиву, или прекратить, если свойства массива таковы, что в нем возможна лишь одна запись с заданным значением поискового слова. Например, в массиве с характе ристиками оборудования при поиске по коду модели оборудования нет нужды продолжать поиск, если уже встретилась запись, имеющая заданный код. В ней содержатся все необходимые тех нологические характеристики оборудования, и такая запись в массиве одна. Если поиск в этом массиве вести по другим харак теристикам, например по коду технологической операции и га бариту деталей, то тогда потребуется перебрать весь массив, так как могут быть найдены несколько записей с разными кодами оборудования.
Пусть, например, имеем следующие значения поисковых при знаков: КОД ОПЕРАЦИИ = 120 (токарная операция), габарит детали: L = 60, максимальный диаметр D — 30. В результате
135
поиска могут быть выбраны записки с характеристиками станков мод. 1615М, 1П61, 1А62, 1М620, 1620, 1П625 и т. д.
Введем некоторые обозначения. Ключевое слово будем обо значать следующим образом: Х к — хк, где Х к — наименование характеристики, по которой идет поиск и, следовательно, входя щей в ключевое слово, а хк — ее значение. Если ключевое слово
состоит из нескольких |
характеристик, то запишем |
|
||||
|
Хк — (Хк1, |
... |
XKi, |
. . . Х кт); |
|
|
при |
этом |
|
|
|
|
|
|
Хк |
(-^kI i |
■■• |
1> |
• • • %кт)> |
|
где |
Х к1 — наименование i-й |
характеристики ключевого |
слова; |
|||
хк1 — значение i-й характеристики ключевого слова. Для |
уско |
|||||
рения поиска в упорядоченном массиве с последовательно-смеж ным расположением записей применяют способ последовательного деления на части [22 ]. Весь массив из N записей делят на п частей и вместо последовательного просмотра на X характеристике ведут
поиск |
через |
записей. |
Он продолжается до тех пор, пока |
|
будет |
выполняться |
условие |
xt < хк, |
где х { — значение харак |
теристики X в i-й записи i |
X. При невыполнении указанного |
|||
условия поиск ведут на участке от i ------ |
до i. Его также делят |
|||
на п частей, но при этом шаг уже становится в п раз меньше,
ит. д. Процесс сужения области поиска продолжают до тех пор, пока не будет выполнено условие х,- = хк.
При этом способе поиска минимальное число циклов, где под циклом понимается совокупность арифметических и логических операций, связанных с просмотром одной записи, достигается при п = 2. В этом случае способ называется «делением пополам»
ичисло циклов I ^ log2 N. Для массива из 10 тыс. записей при последовательном переборе число просмотров в среднем будет составлять около 5000, а при способе деления пополам / = log2
10 ООО |
14. |
При |
свободном расположении между записями могут быть |
свободные места (записи или их группы не являются смежными). Это удобно для внесения новых записей без их сдвига. Во многих случаях целесообразно все записи разделить на группы (подмас сивы) по какой-либо характеристике и внутри каждой группы оставить место для внесения новых записей. Группы, в свою очередь, могут иметь плотное или свободное расположение внутри данного массива. Например, массив с характеристиками обору дования можно разделить по типам оборудования в соответствии с классификацией ЭНИМСа на 65 групп записей. Внутри каждой из них собираются характеристики оборудования одного типа, но отличающиеся по типоразмерам и модификациям. Добавление новых моделей оборудования .производится в свободные места
136
соответствующих групп. Однако при свободном расположении записей затруднен их поиск даже способом перебора, так как они физически разнесены в памяти машины.
Тогда для выявления местонахождения записей нужно приме нять указатели (ссылки). Условно их можно разделить на внешние и внутренние. Внешний указатель является машинным вариантом каталожного принципа хранения информации и основан на таблич ном представлении следующего вида:
З н а ч ен и е х а р а к т ер и ст и |
ху\ |
X y l |
ки Х у (х а р а к т ер и сти к ), |
|
|
в х о д я щ и х в к лю чевое |
|
|
сл о в о |
|
|
А д р ес зап и си |
|
°1 |
Здесь каждому значению характеристики |
Х ц соответствует |
|
абсолютный или относительный адрес ai записи, имеющей значе ние характеристики, равное ху1.
Кроме того, в каждой графе могут указываться параметры, определяющие структуру записи, например, ее длину, количество и длину полей и т. д. При машинной реализации внешнего ука зателя каждая графа таблицы представляет собой запись с описа нием, хотя и неполным, характеристик некоторой другой записи с адресом at, т. е. описание некоторого объекта. Поэтому внешний указатель можно рассматривать как массив записей, к которому применимы все рассматриваемые методы поиска и организации массивов. Скорость поиска записей при наличии внешних указа телей зависит от способов поиска информации во внешнем ката логе. Проследим это на примере организации массива с характе ристиками оборудования. Внешний указатель (каталог) можно создать таким, чтобы в каждой его записи содержался код модели оборудования и адрес записи с характеристиками оборудования этой модели. Поиск таких характеристик по данному коду осу ществляется либо перебором кодов моделей, либо делением попо лам, если записи внешнего указателя упорядочены по коду мо дели. При объеме в 250 записей на их перебор в среднем понадоби лось бы 120 циклов, а при делении пополам — 9 циклов. Если записи разделены на группы по типам оборудования, то внешний каталог можно организовать по-иному, например использовав вместо кода модели автомата двухзначный десятичный код, первая цифра которого выражает группу, а вторая — тип оборудования. При объеме указателя, равном 65 записям, число циклов при деле нии пополам равно 5, т. е. поиск внутри найденной группы записей осуществляется перебором в среднем за 5 циклов.’ Хотя в рассма триваемых вариантах число циклов поиска примерно одинаково, второй вариант удобнее с точки зрения внесения новой информа ции. В первом случае запись о новой модели оборудования зано сится в любое место массива, а информация об этой записи фикси руется во внешнем каталоге. Причем в указателе она помещается
137
в конец всех записей, если они не упорядочены, или в определен ное место, если они упорядочены, и тогда нужно по специальной программе, сдвигая старые, освобождать место для новой записи. Во втором случае новая запись с характеристиками оборудования заносится в свободное место группы, имеющей заданный тип обо рудования; изменений во внешнем указателе не требуется. Вну тренний указатель (ссылка) используется для последовательной связи элементов массива (отдельных полей записей, либо самих записей, либо групп записей). Цепочки из соединенных между собой элементов массива называют списками. Применение списков позволяет ускорить поиск информации или обеспечить более удоб ное внесение информации в память машины. Для организации списка нужно добавить к соответствующим элементам массива внутренние указатели в виде адресов связи.*
Рассмотрим организацию списков записей. При поиске по раз личным характеристикам свободно расположенных записей тре буется столько внешних указателей, сколько ключевых слов может быть образовано при решении конкретной задачи. Возмож ное многообразие поисковых характеристик, большое количество внешних указателей может сильно увеличить потребный объем памяти ЭВМ и усложнить процедуру внесения новых записей. Поэтому, если допустимо использовать при поиске способ пере бора, экономия памяти и простота внесения информации дости гается организацией списка записей. Для этого в каждой записи отводится поле для адреса связи (внутреннего указателя) на сле дующую по списку запись. Поиск ведут перебором от первой записи к последующей, причем очередной переход выполняют по адресам связи (рис. 17). Новую запись добавляют в любое свободное место массива. В последней записи списка в поле его адреса вместо символов, обозначающих конец, ставят адрес новой записи. Во внутреннем указателе новой записи, являющейся последней, указывают, символ конца списка.
При такой организации записей необходим лишь внешний указатель на первую запись списка. Если записи расположены плотно и упорядочены, то внутренние указатели могут быть ис пользованы для более удобной процедуры внесения изменений. В этом случае новая запись фиксируется в любом свободном месте массива, а в записи, за которой должна была следовать включае мая, дается необходимый адрес связи (рис. 18). Процедура поиска в этом случае несколько сложнее по сравнению с «делением попо лам», так как на заключительном этапе нужно проверять наличие адреса связи и при необходимости переходить к перебору записей по списку. Поэтому по мере накопления записей, включенных
* Под адресом связи понимается некоторый условный адрес, который при реализации заданного способа поиска является относительным по отношению к началу массива, например, номером строки (записи) в массиве, или абсолютным адресом машинного слова, с которого начинается запись.
138
Записи |
Записи |
Р и с . 17. С п и сковая о р га н и за ц и я |
Р и с . 18. |
И сп ол ьзован и е |
в н у т р е н н и х у к а |
||
за п и се й |
(л и н и я м и п ок азан ы связи |
за т ел ей |
п р и |
п л от н ом |
и уп о р я д о ч ен н о м |
м еж д у |
сп и ск а м и ): |
расп ол ож ен и и |
зап и сей |
|
|
ВУ — внешний указатель; АС — адрес связи
в массив указанным способом, для ускорения поиска вновь сле дует провести упорядочение массива по всем имеющимся записям.
Аналогичным образом используются внутренние указатели и для групп записей. По мере внесения новых записей свободные места в плотно расположенных группах могут быть исчерпаны. Тогда последующие вносимые записи, относящиеся к группе, организуются в списках, причем ссылка на первую запись списка дается из записи, занявшей последнее свободное место в группе. Когда в массиве накопится большое число списков, необходимо расширить объемы групп, соединить вместе все записи, относя щиеся к группе, и ликвидировать списки.
В отличие от списков, в которых записи последовательно соеди нены в цепочку адресами связи, так называемые «цепные списки» для ускорения поиска могут быть снабжены более чем одним вну тренним указателем и организованы в более сложные списки [10]. В первую очередь это относится к записям, из которых образован внешний каталог и которые физически разнесены в памяти ЭВМ. Структура записи в этом случае
Xyi АСх а с 2 АС3
где АСх — адрес записи, на которую происходит переход при выполнении условия хк < ху1\ АС3 и АС3 адреса записи соответ ственно для условий хк = xyi и хк > xyi.
139
Таким образом, переход к тому или иному адресу связи зави сит от результатов сравнения значения хк характеристики, обра зующей ключевое слово со значением ху1 одноименной характе ристики, входящей в запись. Адреса связи могут указывать либо на следующую запись внешнего указателя, либо на запись самого объекта. Скорость поиска при правильном выборе значений xyi приближается к скорости поиска при способе деления пополам, а количество записей во внешнем указателе равно примерно поло вине количества записей в массиве с характеристиками объекта. Процедура внесения изменений достаточно проста и заключается в поиске записи, в которой необходимо сделать ссылку на вводи мую информацию, или внесении новой записи во внешний указа тель. Аналогичным образом образуется указатель для поиска по признаку, значения которого выражены алфавитно-цифровой информацией, но сравнение ведется лишь по условию «равно» или «не равно». Данный способ организации списков может быть использован для опознания и кодирования длинных фраз, выра жающих значения некоторых признаков в программах-трансля торах с внешнего на внутренний язык описания объектов. Замена фразы эквивалентным ей кодом удобна для обработки информации и компактного ее представления внутри ЭВМ.
Более сложно организованы списки, названные А. Н. Китовым «ассоциативными списками с узловой структурой» [10]. Рассмо трим их использование на примере массива с описанием деталей. В данном случае «узлами» являются записи с описанием деталей, причем каждый узел «пронизан» списками, соединяющими в це почки детали с одинаковыми значениями некоторых характеристик. Например, для каждого значения кода типового элемента детали создается свой список, в котором объединяются записи, имеющие это значение. В любой записи каждый элемент, входящий в спи сок, снабжается внутренним указателем на следующий член списка. Структура внутреннего указателя, закрепленного за кодом элемента детали, имеет вид
Код элемента АС НП
где АС — адрес связи с записью, имеющей в своем составе элемент с тем же кодом и являющейся следующим членом списка, НП — номер поля записи с адресом АС. Для указания начала и конца списка, а также числа записей в списке создается внешний указа тель (табл. 23).
Число строк в указателе равно числу значений кода элемента. Для ускорения поиска коды элемента во внешнем указателе рас положены в порядке возрастания его величины. Поиск информации в массиве деталей, организованном таким способом, проводят сле дующим образом. Пусть необходимо найти детали, имеющие сквоз ное цилиндрическое отверстие (код элемента 140). Для этого во
140
Таблица 23
Схема организации списков и поиска по коду элемента в массиве с описанием деталей
В неш ний |
указат ель |
(словарь) |
|
|
|
|
М ассиВ с |
описанием дет алей |
|
||
код |
Условный |
Н о м е р |
Услобный |
н о м е р |
У и с л о |
Условный |
З а п и с и |
с описанием дет али |
|
||
|
|
|
|
|
|||||||
а д р е с |
п о л я |
а д р е с |
п о л я В |
номер |
|
Коды |
эл е м е н т о в |
|
|||
элемент а |
I |
а д р е с |
|
|
|||||||
пер бой |
б пербой |
последней |
последней |
за п и се й |
докум ент а |
|
|
|
|
||
дет али |
з а п и с и |
з а п и с и |
з а п и с и |
з а п и с и |
В списке |
з а п и с и |
1-е поле |
2 - е |
поле |
3-е поле |
у-е поле |
|
с п и с к а |
с п и с к а |
с п и с к а |
с п и с к а |
|
|
|
|
|
|
|
1уо
210 |
Ю 10 |
L _
Г
1) |
5976735 |
100 |
|
|
Г |
|
|
|
|
.в) |
Ю-387В735\ |
\2Ю 5 |
о |
ICO |
Г С |
|
_____I |
|
|
|
|
|
|
|
*г- |
|
1 |
|
|
-5) |
/0-5876735 |
т кс кс |
210} 7 7 |
|
|
|
Г - |
7JT |
|
|
|
|
||
. .
I к ВУ
