Структуре общим для разновидностей данной. Виды структур организации

ТИПЫ И СТРУКТУРЫ ДАННЫХ

Методические указания по дисциплине «Алгоритмы и структуры данных»

Составитель О.Л. Чагаева

Подготовлены кафедрой «Программные средства и системы» ФУО УрФУ

Введение

В окружающем нас мире находится огромное разнообразие предметов, объектов, явлений, процессов, отображаемых посредством информации.

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

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

Реквизит - это логически неделимый элемент любой сложной информационной совокупности, соотносимый с определенным свойством отображаемого информацией объекта или процесса.

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

Другими часто встречающимися в литературе синонимами реквизита являются элемент, поле, терм, признак иатрибут .

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

Каждому реквизиту присуще некоторое конечное множество значений в зависимости от характеристики того свойства объекта (явления), которое информационно отображает данный реквизит. Это множество, именуемое классом значений, одно, например, для параметра «температура больного» и другое - для признака «пол больного».

Значение реквизита, таким образом, есть в каждый заданный момент времени одна из позиций класса значений данного реквизита, отображающая, как предполагается, соответствующее состояние (из множества состояний) того свойства объекта (явления), которое характеризует реквизит. Так, текущим значением реквизита «температура больного» может быть 37,4°, а реквизита «пол больного» - «мужской». Другими словами, значение реквизита используется для представления значения соответствующего свойства сущности.

Существует ряд типов реквизитов в зависимости от видов значений, которые они могут иметь. Наиболее распространенными типами реквизитов, однако, являются числовой и текстовой .

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

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

Реквизиты текстового типа выражают, как правило, качественные свойства сущностей и характеризуют обстоятельства, при которых имел место изучаемый процесс и были получены те или

иные числовые значения. Поэтому такие реквизиты называются признаками.

Значениями признаков являются последовательности символов (букв, цифр, различных знаков и специальных обозначений), называемые строками, или текстом.

Полный набор всевозможных попарно различимых символов данной информационной системы составляет ее алфавит, зависящий от характера задач, применяемых технических средств обработки данных и других факторов. Причем на различных стадиях обработки и даже в рамках одной вычислительной системы возможно применение различных алфавитов.

Размер алфавита (число разнообразных символов, которые могут быть в одном разряде величины) и его состав (набор) имеют прямое отношение к решению следующих проблем:

кодирования и дешифровки,

компактной записи значений единиц информации,

эффективного хранения данных, ускорения их поиска, передачи, ввода в вычислительные машины,

получения от машин информации в наиболее удобной для потребления форме,

снижения затрат на всевозможные перезаписи.

Поэтому выбору алфавита придается немаловажное значение.

Для использования информации, в алгоритмизации и программировании очень большое значение уделяется таким понятиям, как тип и структура данного.

1. ТИПЫ ДАННЫХ

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

Кроме значения, к таким признакам относится понятие «тип данного». Тип данного определяется множеством значений данного и набором операций, которые можно выполнять над этими значениями в соответствии с их известными свойствами. Следовательно, тип данного определяет те операции, которые допустимы над соответствующим значением.

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

2. СТРУКТУРЫ ДАННЫХ

Особенностью данного того или иного типа является простота организации (неструктурированность).

Структура данных – это совокупность элементов данных, между которыми существуют некоторые отношения, причем элементами данных могут быть как простые данные (скаляры), так и структуры данных.

Таким образом, структуру можно определить следующим образом: S = (D, R), где D - множество элементов данных, R – множество отношений между элементами данных.

Все связи одного элемента данных с другими образуют элемент отношений, ассоциированный с соответствующим элементом данных.

Графическое изображение структуры должно отражать ее элементы данных и связи (отношения между ними), поэтому структуру удобно изображать в виде графа. При этом вершины графа можно интерпретировать как элементы данных, а отношениям между элементами данных соответствуют ориентированные дуги или неориентированное ребра (рис. 1).

Таким образом описанную и представленную структуру данных называют абстрактной или логической, так как она рассматривается без учета ее представления в машинной памяти. Но любая структура данных должна быть представлена в машинной памяти. Такая структура данных называется физической структурой, структурой хранения, внутренней структурой или структурой памяти.

Рис 1. Неориентированный (а) и ориентированный (б) граф

Таким образом, физическая структура данных отражает способ представления данных в машинной памяти.

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

Например, с точки зрения языков программирования двумерный массив представляет собой прямоугольную таблицу, а в памяти – это линейная последовательность ячеек, в каждой из которых хранится значение одного из элементов массива, причем элементы массива упорядочены по строкам (или столбцам).

Разумеется, между логической и физической структурой должен существовать механизм, позволяющий отобразить логическую структуру в физическую.

Таким образом, каждую структуру данных можно характеризовать ее логическим (абстрактным) и физическим (конкретным) представлением, а также совокупностью операций на этих двух уровнях представления структуры (рис. 2).

Операции над логической структурой

Логическая структура данных

Операции над физической структурой

Физическая структура данных

Рис. 2. Отображение между логическим и физическим представлением структуры данных

2.1. Классификация структур данных

В зависимости от отсутствия или наличия явно заданных связей между элементами данных следует различать несвязанные структуры (векторы, массивы, строки, стеки, очереди) и связные структуры (связные списки).

Важные признак структуры – ее изменчивость – изменение числа элементов и/или связей между элементами структуры. Значение элемента данных не имеется в виду, так как в этом случае это свойство было бы характерно для всех структур данных за исключением, может быть, констант и данных, хранящихся в ПЗУ. По признаку изменчивости различают статические, полустатические и динамические структуры.

Важный признак структуры данных – характер упорядоченности ее элементов. По этому признаку структуры можно делить на линейно-упорядоченные, или линейные, и нелинейные.

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

2.2. Простейшие статические структуры

К простейшим структурам данных обычно относят векторы, массивы, записи, таблицы. Они характеризуются следующими свойствами:

постоянство структуры в течение всего времени ее существования;

смежность элементов и непрерывность области памяти, отводимой сразу для всех элементов структуры;простота и постоянство отношений между элементами

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

В силу этих свойств векторы, массивы, записи и таблицы принято считать статическими структурами.

2.2.1. Вектор

Вектор – это конечное упорядоченное множество простых данных или скаляров, одного и того же типа. С геометрической точки зрения вектор задает точку в многомерном пространстве, координатами которой служат значения элементов вектора.

Элементы вектора находятся друг с другом в единственно возможном отношении – отношении непосредственного следования. Строгая последовательность элементов вектора позволяет

пронумеровать их последовательными целыми числами – индексами. Логическая структура вектора полностью описывается числом и типом его элементов. Например, int array – целочисленный массив, состоящий из 10 элементов.

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

На логическом уровне для доступа к элементу вектора достаточно указать имя вектора и значение индекса соответствующего элемента. Например: array + array.

Физическая структура вектора – это последовательность одинаковых по длине участков памяти, называемых полями или слотами, каждый из которых предназначен для хранения одного элемента вектора. Поле может иметь размер минимально адресуемой ячейки памяти или соответствовать целой группе последовательных ячеек памяти.

Нередко физической структуре ставится в соответствие дескриптор или заголовок, который содержит информацию о данной физической структуре. Дескриптор необходим, например, в том случае, когда граничные размеры вектора становятся известны только на этапе выполнения программы.

Дескриптор тоже хранится в машинной памяти и представляет собой структуру, называемую записью. Для вектора дескриптор обычно хранит его имя, размер, значения граничных индексов, тип элемента, размер поля или слота, адрес первого элемента вектора (поля, хранящего этот элемент).

2.2.2. Массив

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

Рис. 3. Вид многомерного массива

На рис.3 представлен вид многомерного массива: в каждом узле решетки находится элемент массива. Таким образом, размерность его равна (3,3,2).

Как и для вектора, важнейшей элементарной операцией для массива является доступ к его элементу. На уровне логической структуры она осуществляется при помощи имени массива и упорядоченного набора индексов, однозначно идентифицирующих элемент массива. Например: array[i][j].

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

Несмотря на это, дескриптор многомерного массива отличается от дескриптора вектора. Например, в нем должна хранится информация о размерности массива, способе упорядочения элементов (по строкам или столбцам).

2.2.3. Запись

Запись – это конечное упорядоченное множество элементов, содержащее в общем случае данные различных типов.

Элементы записи часто называют полями. Запись – это обобщенное понятие вектора, при котором не требуется однотипность или

Из этой статьи вы узнаете:

  • Каковы основные типы организационных структур предприятия
  • Какие различают недостатки и преимущества у различных типов организационных структур предприятия
  • Какой тип организационной структуры предприятия выбрать

Распределение управленческих обязанностей и полномочий на предприятии называется организационной структурой аппарата управления. Все структурные подразделения и позиции внутри них предназначены для осуществления некоторой совокупности функций и выполнения работ различных типов. Должностные лица наделены рядом прав и возможностей по распоряжению ресурсами и отвечают за то, чтобы их службы исполняли предписанные им обязанности. Давайте подробно рассмотрим различные типы организационных структур предприятия.

Основные типы организационных структур управления предприятием

Главными структурами, существующими в компании, являются:

  • производственная;
  • управленческая;
  • организационная.

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

Организационная структура любой компании состоит из:

  • структуры управления;
  • структуры производства.

Структура управления включает должности, взаимосвязанные между собой, и управленческие органы предприятия. Она должна быть зафиксирована в уставе компании и специальных положениях, где перечисляются все подразделения, службы, департаменты и отделы и приводятся их должностные инструкции.<

Управленческие структуры предприятия делятся на несколько типов: они могут быть низкими горизонтальными и высокими иерархическими.

Высокие иерархические структуры отличаются наличием множества уровней управления (ступенек иерархии) и ограниченной зоной ответственности любого из руководителей. Их плюс заключается в том, что они позволяют экономить на производственных издержках.

Низкие горизонтальные структуры, напротив, имеют минимально возможное число уровней управления, при этом зона ответственности каждого руководителя относительно велика. Конкурентное преимущество этого типа – в возможности экономить на упущенной выгоде.

Существует несколько основных типов организационных структур управления предприятием:

  • линейная;
  • функциональная;
  • линейно-функциональная;
  • проектная;
  • дивизиональная;
  • матричная и некоторые другие.

Типы организационных структур предприятия: достоинства и недостатки

Иерархия остается традиционной формой построения организационной структуры для многих предприятий, хотя эксперты склонны считать ее устаревшей и неэффективной. Новые модели – плоские и матричные (ориентированные не на вертикаль подчинения, а на горизонталь), наоборот, являются более прогрессивными и, в каком-то смысле, модными.

Создавая свой бизнес или решая задачу по реструктуризации уже существующего предприятия, учитывайте все особенности различных типов организационных структур. Проанализировав их плюсы и минусы, вы сможете подобрать именно тот вариант, который будет оптимален в вашем случае.

  1. Линейная структура управления.

Это простая и ясная иерархия, где сильно выражены вертикальные связи (от руководителей к подчиненным) и практически не развиты горизонтальные (контакты между подразделениями).

К достоинствам линейного типа организационной структуры предприятия относятся:

  • четкие границы ответственности, полномочий и компетенций каждого;
  • простота контроля;
  • возможность принимать и реализовывать решения быстро и с минимальными издержками;
  • простота и иерархичность коммуникаций;
  • ответственность ложится на конкретные персоны, она носит личный характер;
  • полное воплощение принципа единоначалия.

Конечно, обладает данная модель и своими недостатками:

  • к управленцам всех уровней предъявляются повышенные профессиональные требования;
  • при этом им не нужны узкая специализация и глубокое понимание специфики работы;
  • стиль управления строго авторитарен;
  • управленцы всегда перегружены работой.
  1. Функциональная структура.

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

Она обладает весомыми преимуществами:

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

Есть у функциональной организационной структуры и ряд минусов:

  • принцип единоначалия соблюдается не всегда;
  • сложно бывает подготавливать и согласовывать решения;
  • коммуникации и распоряжения могут повторяться;
  • контролировать такую систему довольно сложно.
  1. Функционально-линейная организационная структура.

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

Например, директор, ведающий всем процессом производства и сбыта мужской обуви, имеет у себя в управлении нескольких менеджеров – по дизайну изделий, по производству, по продажам и т. д. Каждый из этих специалистов обладает штатом сотрудников, вплоть до уборщиц и работников конвейера. Между собой данные ветви вертикалей никак не связаны и не коммуницируют.

Предприятия этого типа начали появляться в 20-х годах XX века, когда рынок был стабилен и нуждался в довольно узком ассортименте однородной продукции. Производители промышленных товаров царили на рынке, не конкурируя между собой. Этот период прекрасно характеризуется высказыванием Генри Форда о том, что автомобиль может быть любого цвета, но лишь при условии, что этот цвет – черный.

Главным плюсом предприятий с таким типом организационной структуры является стабильный уровень качества изготавливаемых товаров (при условии, что все производственные и управленческие процессы были правильно настроены и отлажены).

Линейно-функциональная модель имеет и свои типичные проблемы: негибкость, потеря части информации при прохождении через всю вертикаль, затянутый процесс принятия решений.

В наше время такие структуры считаются устаревшими и неэффективными. Они остались только в компаниях-гигантах наподобие «Газпрома» и «Апатита», которые ни с кем не конкурируют и выпускают уникальный продукт.

  1. Дивизиональная структура организации.

Несколько позже, в 50-х годах XX века, на некоторых предприятиях в западных странах образовался еще один тип организационной структуры – дивизиональный.

Это было время активного государственного стимулирования спроса на потребительские товары и зарождения индустрии рекламы. Проанализировав историю старых корпораций, работающих дольше века, можно отчетливо увидеть, как расширялся их ассортимент каждое десятилетие. Причины этого – повышение спроса и усиление рыночной конкуренции. Компании, ранее выпускавшие однородную продукцию (только мужскую и женскую обувь, например), начинают предлагать товары смежных типов (детскую обувь, кожаные аксессуары).

Подразделения, наделенные самостоятельностью (дивизионы), управляются из штаб-квартир. Они могут формироваться по географическому, продуктовому, клиентскому (массовому, корпоративному) принципам. В России очень многие компании используют дивизиональную систему.

Плюсы этого типа организационных структур – высокая гибкость управления, качественный продукт и сервис. Негативным моментом является большая финансовая нагрузка на предприятие: приходится содержать много директоров. Кроме того, контроль работы каждого дивизиона весьма сложен и требует высокой квалификации.

  1. Проектная организационная структура.

Данная модель относится к наиболее прогрессивным и современным. Предприятия, работающие в рамках проектного подхода, начали появляться в середине XX века, когда строительный рынок переживал период крайней нестабильности. Бизнесу приходилось ориентироваться на выпуск не какого-то одного типа продукции, а самых разных и не связанных между собой товаров, чтобы адаптироваться к ситуации и удовлетворить постоянно меняющийся спрос.

Фактически на подобных предприятиях формируют новую отдельную организационную структуру для обслуживания каждого клиента (со своим руководителем проекта и всеми необходимыми подчиненными, стоящими на разных иерархических уровнях).

Преимущество проектной модели заключается в гибкости и высокой адаптивности к условиям рынка. Недостаток – необходимость высоко оплачивать труд всех управленцев.

  1. Матричная структура.

Это один из самых модных типов организационных структур предприятия, но малоприменимый. Он появился в компании General Electric, когда с 1961 года и на протяжении 12 лет ее руководители пытались создать синтез линейно-функционального и проектного подходов к управлению. В результате появилась матричная организационная структура, где каждый элемент не только подчиняется непосредственному начальнику, но также является частью группы, выполняющей определенную функцию.

К преимуществам матричной модели относятся ее гибкость и возможность передавать информацию без потерь (чего лишены структуры линейно-функционального типа).

Однако есть и существенный минус: вероятность возникновения конфликта интересов на предприятии. Когда один работник принимает задачи сразу от нескольких начальников, не всегда понятно, чье поручение более приоритетно.

  1. Компания-сеть.

Сетевые предприятия (состоящие из множества отдельных дочерних фирм) выделились в самостоятельный тип организационных структур относительно недавно. Формирование такой модели было вызвано необходимостью адаптироваться к нестабильной экономической ситуации. В частности, General Motors отделила от головной компании все, что касалось производства, создав сеть из поставщиков различных составляющих и связав их между собой долгосрочными договорами, чтобы таким образом защититься от конкурентов.

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

Понятие модели данных

Модели данных

Модель данных является инструментом моделирования произвольной предметной области.

Модель данных – это совокупность правил порождения структур данных в базе данных, операций над ними, а также ограничений целостности, определяющих допустимые связи и значения данных, последовательность их изменения . Итак, модель данных состоит из трёх частей:

  1. Набор типов структур данных.

Здесь можно провести аналогию с языками программирования, в которых тоже есть предопределённые типы структур данных, такие как скалярные данные, вектора, массивы, структуры (например, тип struct в языке Си) и т.д.

  1. Набор операторов или правил вывода, которые могут быть применены к любым правильным примерам типов данных, перечисленных в (1), чтобы находить, выводить или преобразовывать информацию, содержащуюся в любых частях этих структур в любых комбинациях.

Такими операциями являются: создание и модификация структур данных, внесение новых данных, удаление и модификация существующих данных, поиск данных по различным условиям.

  1. Набор общих правил целостности, которые прямо или косвенно определяют множество непротиворечивых состояний базы данных и/или множество изменений её состояния.

Правила целостности определяются типом данных и предметной областью. Например, значение атрибута Счётчик является целым числом, т.е. может состоять только из цифр. А ограничения предметной области таковы, что это число не может быть меньше нуля.

Теперь рассмотрим подробнее наборы, составляющие модель данных.

Структуризация данных базируется на использовании концепций "агрегации" и "обобщения". Один из первых вариантов структуризации данных был предложен Ассоциацией по языкам обработки данных (Conference on Data Systems Languages, CODASYL) (рис. 2.1).

Рис.2.1 Композиция структур данных по версии CODASYL

Элемент данных – наименьшая поименованная единица данных, к которой СУБД может обращаться непосредственно и с помощью которой выполняется построение всех остальных структур. Для каждого элемента данных должен быть определён его тип.

Агрегат данных – поименованная совокупность элементов данных внутри записи, которую можно рассматривать как единое целое. Агрегат может быть простым (включающим только элементы данных, рис. 2.2,а) и составным (включающим наряду с элементами данных и другие агрегаты, рис. 2.2,б).

Рис.2.2 Примеры агрегатов: а) простой и б) составной агрегат

Запись – поименованная совокупность элементов данных или эле-ментов данных и агрегатов. Запись – это агрегат, не входящий в состав никакого другого агрегата; она может иметь сложную иерархическую структуру, поскольку допускается многократное применение агрегации. Различают тип записи (её структуру) и экземпляр записи, т.е. запись с конкретными значениями элементов данных. Одна запись описывает свойства одной сущности ПО (экземпляра). Иногда термин "запись" за-меняют термином "группа".


Пример записи, содержащей сведения о сотруднике, приведён на рис. 2.3.

Рис.2.3 Пример записи типа СОТРУДНИК

Эта запись имеет несколько элементов данных (Номер пропуска, Должность, Пол и т.д.) и три агрегата: простые агрегаты ФИО и Адрес и повторяющийся агрегат Телефоны . (Повторяющийся агрегат может включаться в запись произвольное число раз).

Среди элементов данных (полей записи) выделяются одно или несколько ключевых полей . Значения ключевых полей позволяют классифицировать сущность, к которой относится конкретная запись. Ключи с уникальными значениями называются потенциальными . Каждый ключ может представлять собой агрегат данных. Один из ключей назначается первичным, остальные являются вторичными. Первичный ключ идентифицирует экземпляр записи, его значение должно быть уникальным и обязательным для записей одного типа. Для примера на рис. 2.3 потенциальными ключами являются поля № пропуска и Паспорт , а первичным ключом целесообразнее выбрать поле № пропуска , т.к. оно явно занимает меньше памяти, чем паспортные данные.

Набор (или групповое отношение ) – поименованная совокупность записей, образующих двухуровневую иерархическую структуру. Каждый тип набора представляет собой связь между двумя или несколькими типами записей. Для каждого типа набора один тип записи объявляется владельцем набора, остальные типы записи объявляются членами набора. Каждый экземпляр набора должен содержать только один экземпляр записи типа владельца и столько экземпляров записей типа членов набора, сколько их связано с владельцем. Для группового отношения также различают тип и экземпляр.

Групповые отношения удобно изображать с помощью диаграммы Бахмана, которая названа так по имени одного из разработчиков сетевой модели данных. Диаграмма Бахмана – это ориентированный граф, вершины которого соответствуют группам (типам записей), а дуги – групповым отношениям (рис. 2.4).

Рис. 2.4 Пример диаграммы Бахмана для фрагмента БД "Город"

Здесь запись типа ПОЛИКЛИНИКА является владельцем записей типа ЖИТЕЛЬ диспансеризация . Запись типа ОРГАНИЗАЦИЯ также является владельцем записей типа ЖИТЕЛЬ и они связаны групповым отношением работают . Записи типа РЭУ и типа ЖИТЕЛЬ являются владельцами записей типа КВАРТИРА с отношениями соответственно обслуживают и проживают . Таким образом, запись одного и того же типа может быть членом одного отношения и владельцем другого.

База данных – поименованная совокупность экземпляров групп и групповых отношений. Это самый высокий уровень структуризации данных.

Примечание : структуризация данных по версии CODASYL используется в сетевой и иерар-хической моделях данных. В реляционной модели принята другая структуризация данных, основанная на теории множеств.

Рыночная экономика – сложная и динамичная система, с множеством связей между продавцами, покупателями и другими участниками деловых отношений. Поэтому рынки по определению не могут быть однородными. Они различаются по целому ряду параметров: количество и размер фирм действующих на рынке, степень их влияния на цену, вид предлагаемых товаров и многое другое. Эти характеристики определяют типы рыночных структур или иначе рыночных моделей. Сегодня принято выделять четыре основных типа рыночных структур: чистая или совершенная конкуренция, монополистическая конкуренция, олигополия и чистая (абсолютная) монополия. Рассмотрим их более подробно.

Понятие и типы рыночных структур

Рыночная структура – комбинация характерных отраслевых признаков организации рынка. Каждый тип рыночной структуры имеет ряд характерных для него признаков, которые влияют на то, как формируется уровень цен, как взаимодействуют продавцы на рынке и т.д. Кроме того, типы рыночных структур имеют различную степень конкуренции.

Ключевые характеристики типов рыночных структур :

  • количество фирм-продавцов в отрасли;
  • размеры фирм;
  • количество покупателей в отрасли;
  • вид товара;
  • барьеры для входа в отрасль;
  • доступность рыночной информации (уровень цен, спрос);
  • возможность отдельной фирмы повлиять на рыночную цену.

Важнейшая характеристика типа рыночной структуры – уровень конкуренции , то есть возможность отдельно взятой фирмы-продавца повлиять на общую конъюнктуру рынка. Чем рынок более конкурентный, тем ниже такая возможность. Сама конкуренция может быть как ценовой (изменение цены), так и неценовой (изменение качества товара, дизайна, сервиса, реклама).

Можно выделить 4 основных типа рыночных структур или моделей рынка, которые представлены ниже в порядке убывания уровня конкуренции:

  • совершенная (чистая) конкуренция;
  • монополистическая конкуренция;
  • олигополия;
  • чистая (абсолютная) монополия.

Таблица со сравнительным анализом основных типов рыночных структура показана ниже.



Таблица основных типов рыночных структур

Совершенная (чистая, свободная) конкуренция

Рынок совершенной конкуренции (англ. «perfect competition» ) – характеризуется наличием множества продавцов предлагающих однородный товар, при свободном ценообразовании.

То есть на рынке действует много фирм предлагающих однородную продукцию, и каждая фирма-продавец, сама по себе, не может повлиять на рыночную цену этой продукции.

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

Особенности или условия совершенной конкуренции :

  • количество фирм-продавцов в отрасли: большое;
  • размер фирм-продавцов: маленький;
  • товар: однородный, стандартный;
  • контроль над ценой: отсутствует;
  • барьеры для входа в отрасль: практически отсутствуют;
  • методы конкурентной борьбы: только неценовая конкуренция.

Монополистическая конкуренция

Рынок монополистической конкуренции (англ. «monopolistic competition» ) – характеризуется большим количеством продавцов, предлагающих разнообразный (дифференцированный) товар.

В условиях монополистической конкуренции вход на рынок достаточной свободный, барьеры есть, но они относительно легко преодолимы. Например, чтобы войти на рынок фирме может потребоваться получить специальную лицензию, патент и т.д. Контроль фирм-продавцов над фирмами ограничен. Спрос на товары имеет высокую эластичность.

Примером монополистической конкуренции может служить рынок косметики. Например, если потребители предпочитают косметическую продукцию «Avon», то они готовы заплатить за нее больше, чем за аналогичную косметику других компаний. Но если разница в цене будет слишком большой, потребители все же перейдут на более дешевые аналоги, например фирмы «Oriflame».

К монополистической конкуренции можно отнести рынки пищевой и легкой промышленности, рынок лекарственных средств, одежды, обуви, парфюмерии. Товары на таких рынках дифференцированы – один и тот же товар (например, мультиварка) у разных продавцов (производителей) может иметь множество различий. Различия могут проявляться не только в качестве (надежность, дизайн, количество функций и пр.), но и в сервисе: наличие гарантийного ремонта, бесплатная доставка, техподдержка, рассрочка платежа.

Особенности или черты монополистической конкуренции :

  • количество продавцов в отрасли: большое;
  • размер фирм: маленький или средний;
  • количество покупателей: большое;
  • товар: дифференцированный;
  • контроль над ценой: ограниченный;
  • доступ к рыночной информации: свободный;
  • барьеры для входа в отрасль: низкие;
  • методы конкурентной борьбы: главным образом неценовая конкуренция, и ограниченная ценовая.

Олигополия

Рынок олигополии (англ. «oligopoly» ) – характеризуется наличием на рынке небольшого числа крупных продавцов, товар которых может быть как однородным, так и дифференцированным.

Вход на олигополистический рынок затруднителен, входные барьеры очень высоки. Контроль отдельных компаний над ценами ограниченный. Примерами олигополии могут служить автомобильный рынок, рынки сотовой связи, бытовой техники, металлов.

Особенность олигополии в том, что решения компаний о ценах на товар и объемах его предложения взаимозависимы. Ситуация на рынке сильно зависит от того как реагируют компании при изменении цены на продукцию одним из участников рынка. Возможны два вида реакции : 1) реакция следования – другие олигополисты соглашаются с новой ценой и устанавливают цены на свой товар на таком же уровне (следуют за инициатором изменения цены); 2) реакция игнорирования – другие олигополисты игнорируют изменение цены фирмой-инициатором и поддерживают прежний уровень цен на свою продукцию. Таким образом, для рынка олигополии характерна ломаная кривая спроса.

Особенности или условия олигополии :

  • количество продавцов в отрасли: маленькое;
  • размер фирм: большой;
  • количество покупателей: большое;
  • товар: однородный или дифференцированный;
  • контроль над ценой: значительный;
  • доступ к рыночной информации: затруднен;
  • барьеры для входа в отрасль: высокие;
  • методы конкурентной борьбы: неценовая конкуренция, очень ограниченная ценовая.

Чистая (абсолютная) монополия

Рынок чистой монополии (англ. «monopoly» ) – характеризуется наличием на рынке одного-единственного продавца уникального (не имеющей близких заменителей) товара.

Абсолютная или чистая монополия – полная противоположность совершенной конкуренции. Монополия – это рынок одного продавца. Конкуренция отсутствует. Монополист обладает всей полнотой рыночной власти: устанавливает и контролирует цены, решает какой объем товара предлагать рынку. При монополии отрасль, по сути, представлена всего одной фирмой. Барьеры входа на рынок (как искусственные, так и естественные) практически непреодолимы.

Законодательство многих стран (в т.ч. России) борется с монополистической деятельностью и недобросовестной конкуренцией (сговор между фирмами в установлении цен, ).

Чистая монополия, особенно в масштабах всей страны, явление очень и очень редкое. Примерами могут служить небольшие населенные пункты (деревни, поселки, небольшие города), где лишь один магазин, один владелец общественного транспорта, одна железная дорога, один аэропорт. Или естественная монополия.

Особые разновидности или типы монополии :

  • естественная монополия – товар в отрасли может быть произведен одной фирмой с меньшими затратами, чем если бы его производством занималось множество фирм (пример: предприятия коммунального хозяйства);
  • монопсония – на рынке единственный покупатель (монополия со стороны спроса);
  • двусторонняя монополия – один продавец, один покупатель;
  • дуополия – в отрасли присутствуют два независимых продавца (такая модель рынка впервые была предложена А.О. Курно).

Особенности или условия монополии :

  • количество продавцов в отрасли: один (или два, если речь идет о дуополии);
  • размер фирмы: различный (чаще большой);
  • количество покупателей: различное (может быть как множество, так и единственный покупатель в случае двусторонней монополии);
  • товар: уникальный (не имеет заменителей);
  • контроль над ценой: полный;
  • доступ к рыночной информации: блокирован;
  • барьеры для входа в отрасль: практически непреодолимы;
  • методы конкурентной борьбы: отсутствуют за ненадобностью (единственное, фирма может работать над качеством для поддержания имиджа).

Галяутдинов Р.Р.


© Копирование материала допустимо только при указании прямой гиперссылки на

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

Кольцевой список

Здесь под структурой понимается способ представления информации, посредством которого совокупность отдельно взятых элементов образует нечто единое, обусловленное их взаимосвязью друг с другом. Скомпонованные по каким-либо правилам и логически связанные межу собой, данные могут весьма эффективно обрабатываться, так как общая для них структура предоставляет набор возможностей управления ими – одно из того за счет чего достигаются высокие результаты в решениях тех или иных задач.

Но не каждый объект представляем в произвольной форме, а возможно и вовсе для него имеется лишь один единственный метод интерпретации, следовательно, несомненным плюсом для программиста будет знание всех существующих структур данных. Таким образом, часто приходиться делать выбор между различными методами хранения информации, и от такого выбора зависит работоспособность продукта.

Говоря о не вычислительной технике, можно показать ни один случай, где у информации видна явная структура. Наглядным примером служат книги самого разного содержания. Они разбиты на страницы, параграфы и главы, имеют, как правило, оглавление, то есть интерфейс пользования ими. В широком смысле, структурой обладает всякое живое существо, без нее органика навряд-ли смогла бы существовать.

Вполне вероятно, читателю приходилось сталкиваться со структурами данных непосредственно в информатике, например, с теми, что встроены в язык программирования. Часто они именуются типами данных. К таковым относятся: массивы, числа, строки, файлы и т. д.

Методы хранения информации, называемые «простыми», т. е. неделимыми на составные части, предпочтительнее изучать вместе с конкретным языком программирования, либо же глубоко углубляться в суть их работы. Поэтому здесь будут рассмотрены лишь «интегрированные» структуры, те которые состоят из простых, а именно: массивы, списки, деревья и графы.

Массивы.

Массив – это структура данных с фиксированным и упорядоченным набором однотипных элементов (компонентов). Доступ к какому-либо из элементов массива осуществляется по имени и номеру (индексу) этого элемента. Количество индексов определяет размерность массива. Так, например, чаще всего встречаются одномерные (вектора) и двумерные (матрицы) массивы.

Первые имеют один индекс, вторые – два. Пусть одномерный массив называется A, тогда для получения доступа к его i-ому элементу потребуется указать название массива и номер требуемого элемента: A[i]. Когда A – матрица, то она представляема в виде таблицы, доступ к элементам которой осуществляется по имени массива, а также номерам строки и столбца, на пересечении которых расположен элемент: A, где i – номер строки, j – номер столбца.

В разных языках программирования работа с массивами может в чем-то различаться, но основные принципы, как правило, везде одни. В языке Pascal, обращение к одномерному и двумерному массиву происходит точно так, как это показано выше, а, например, в C++ двумерный массив следует указывать так: A[i][j]. Элементы массива нумеруются поочередно. На то, с какого значения начинается нумерация, влияет язык программирования. Чаще всего этим значением является 0 или 1.

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

Обязательный критерий статического массива, как было сказано, это однородность данных, единовременно хранящихся в нем. Когда же данное условие не выполняется, то массив является гетерогенным. Его использование обусловлено недостатками, которые имеются в предыдущем виде, но оно оправданно во многих случаях.

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

Списки.

Список – абстрактный тип данных, реализующий упорядоченный набор значений. Списки отличаются от массивов тем, что доступ к их элементам осуществляется последовательно, в то время как массивы – структура данных произвольного доступа. Данный абстрактный тип имеет несколько реализаций в виде структур данных. Некоторые из них будут рассмотрены здесь.

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

Односвязный список

В односвязном списке, приведенным выше, начальным элементом является Head list (голова списка [произвольное наименование]), а все остальное называется хвостом. Хвост списка составляют элементы, разделенные на две части: информационную (поле info) и указательную (поле next). В последнем элементе вместо указателя, содержится признак конца списка – nil.

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

Двусвязный список

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

Для двух видов списков описанных выше существует подвид, называемый кольцевым списком. Сделать из односвязного списка кольцевой можно добавив всего лишь один указатель в последний элемент, так чтобы он ссылался на первый. А для двусвязного потребуется два указателя: на первый и последний элементы.

Кольцевой список

Помимо рассмотренных видов списочных структур есть и другие способы организации данных по типу «список», но они, как правило, во многом схожи с разобранными, поэтому здесь они будут опущены.

Кроме различия по связям, списки делятся по методам работы с данными. О некоторых таких методах сказано далее.

Стек.

Стек

Стек характерен тем, что получить доступ к его элементом можно лишь с одного конца, называемого вершиной стека, иначе говоря: стек – структура данных, функционирующая по принципу LIFO (last in - first out, «последним пришёл - первым вышел»). Изобразить эту структуру данных лучше в виде вертикального списка, например, стопки каких-либо вещей, где чтобы воспользоваться одной из них нужно поднять все те вещи, что лежат выше нее, а положить предмет можно лишь на вверх стопки.

В показанном односвязном списке операции над элементами происходят строго с одного конца: для включения нужного элемента в пятую по счету ячейку необходимо исключить тот элемент, который занимает эту позицию. Если бы было, например 6 элементов, а вставить конкретный элемент требовалось также в пятую ячейку, то исключить бы пришлось уже два элемента.

Очередь.

Структура данных «Очередь» использует принцип организации FIFO (First In, First Out - «первым пришёл - первым вышел»). В некотором смысле такой метод более справедлив, чем тот, по которому функционирует стек, ведь простое правило, лежащее в основе привычных очередей в различные магазины, больницы считается вполне справедливым, а именно оно является базисом этой структуры. Пусть данное наблюдение будет примером. Строго говоря, очередь – это список, добавление элементов в который допустимо, лишь в его конец, а их извлечение производиться с другой стороны, называемой началом списка.


Очередь

Дек

Дек (deque - double ended queue, «двухсторонняя очередь») – стек с двумя концами. Действительно, несмотря конкретный перевод, дек можно определять не только как двухстороннюю очередь, но и как стек, имеющий два конца. Это означает, что данный вид списка позволяет добавлять элементы в начало и в конец, и то же самое справедливо для операции извлечения.


Дек

Эта структура одновременно работает по двум способам организации данных: FIFO и LIFO. Поэтому ее допустимо отнести к отдельной программной единице, полученной в результате суммирования двух предыдущих видов списка.

Графы.

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

Граф – совокупность точек, соединенных линиями. Точки называются вершинами (узлами), а линии – ребрами (дугами).

Как показано на рисунке различают два основных вида графов: ориентированные и неориентированные. В первых ребра являются направленными, т. е. существует только одно доступное направление между двумя связными вершинами, например из вершины 1 можно пройти в вершину 2, но не наоборот. В неориентированном связном графе из каждой вершины можно пройти в каждую и обратно. Частный случай двух этих видов – смешанный граф. Он характерен наличием как ориентированных, так и неориентированных ребер.

Степень входа вершины – количество входящих в нее ребер, степень выхода – количество исходящих ребер.

Ребра графа необязательно должны быть прямыми, а вершины обозначаться именно цифрами, так как показано на рисунке. К тому же встречаются такие графы, ребрам которых поставлено в соответствие конкретное значение, они именуются взвешенными графами, а это значение – весом ребра. Когда у ребра оба конца совпадают, т. е. ребро выходит из вершины F и входит в нее, то такое ребро называется петлей.

Графы широко используются в структурах, созданных человеком, например в компьютерных и транспортных сетях, web-технологиях. Специальные способы представления позволяют использовать граф в информатике (в вычислительных машинах). Самые известные из них: «Матрица смежности», «Матрица инцидентности», «Список смежности», «Список рёбер». Два первых, как понятно из названия, для репрезентации графа используют матрицу, а два последних – список.

Деревья.

Неупорядоченное дерево

Дерево как математический объект это абстракция из соименных единиц, встречающихся в природе. Схожесть структуры естественных деревьев с графами определенного вида говорит о допущении установления аналогии между ними. А именно со связанными и вместе с этим ациклическими (не имеющими циклов) графами. Последние по своему строению действительно напоминают деревья, но в чем то и имеются различия, например, принято изображать математические деревья с корнем расположенным вверху, т. е. все ветви «растут» сверху вниз. Известно же, что в природе это совсем не так.

Поскольку дерево это по своей сути граф, у него с последним многие определения совпадают, либо интуитивно схожи. Так корневой узел (вершина 6) в структуре дерева – это единственная вершина (узел), характерная отсутствием предков, т. е. такая, что на нее не ссылается ни какая другая вершина, а из самого корневого узла можно дойти до любой из имеющихся вершин дерева, что следует из свойства связности данной структуры. Узлы, не ссылающиеся ни на какие другие узлы, иначе говоря, ни имеющие потомков называются листьями (2, 3, 9), либо терминальными узлами. Элементы, расположенные между корневым узлом и листьями – промежуточные узлы (1, 1, 7, 8). Каждый узел дерева имеет только одного предка, или если он корневой, то не имеет ни одного.

Поддерево – часть дерева, включающая некоторый корневой узел и все его узлы-потомки. Так, например, на рисунке одно из поддеревьев включает корень 8 и элементы 2, 1, 9.

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

Представление данных в рассмотренной структуре выгодно в случае наличия у информации явной иерархии. Например, работа с данными о биологических родах и видах, служебных должностях, географических объектах и т. п. требует иерархически выраженной структуры, такой как математические деревья.