23.06.2019

Типы структур данных. Виды орг.структур. Упражнения от freeCodeCamp


  • Перевод

Екатерина Малахова, редактор-фрилансер, специально для блога Нетологии адаптировала статью Beau Carnes об основных типах структур данных.

«Плохие программисты думают о коде. Хорошие программисты думают о структурах данных и их взаимосвязях», - Линус Торвальдс, создатель Linux.

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

В этой статье я покажу вам 10 самых распространенных структур данных. Для каждой из них приведены видео и примеры их реализации на JavaScript. Чтобы вы смогли попрактиковаться, я также добавил несколько упражнений из бета-версии новой учебной программы freeCodeCamp.

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

Связные списки

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

Так устроен связный список

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

Основные операции в связном списке включают добавление, удаление и поиск элемента в списке.

Временная сложность связного списка ╔═══════════╦═════════════════╦═══════════════╗ ║ Алгоритм ║Среднее значение ║ Худший случай ║ ╠═══════════╬═════════════════╬═══════════════╣ ║ Space ║ O(n) ║ O(n) ║ ║ Search ║ O(n) ║ O(n) ║ ║ Insert ║ O(1) ║ O(1) ║ ║ Delete ║ O(1) ║ O(1) ║ ╚═══════════╩═════════════════╩═══════════════╝

Упражнения от freeCodeCamp

Стеки

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

Стек организован по принципу LIFO (Last In First Out, «последним пришёл - первым вышел») . Это значит, что последний элемент, который вы добавили в стек, первым выйдет из него.


Так устроен стек

В стеках можно выполнять три операции: добавление элемента (push), удаление элемента (pop) и отображение содержимого стека (pip).

Временная сложность стека ╔═══════════╦═════════════════╦═══════════════╗ ║ Алгоритм ║Среднее значение ║ Худший случай ║ ╠═══════════╬═════════════════╬═══════════════╣ ║ Space ║ O(n) ║ O(n) ║ ║ Search ║ O(n) ║ O(n) ║ ║ Insert ║ O(1) ║ O(1) ║ ║ Delete ║ O(1) ║ O(1) ║ ╚═══════════╩═════════════════╩═══════════════╝

Упражнения от freeCodeCamp

Очереди

Эту структуру можно представить как очередь в продуктовом магазине. Первым обслуживают того, кто пришёл в самом начале - всё как в жизни.


Так устроена очередь

Очередь устроена по принципу FIFO (First In First Out, «первый пришёл - первый вышел»). Это значит, что удалить элемент можно только после того, как были убраны все ранее добавленные элементы.

Очередь позволяет выполнять две основных операции: добавлять элементы в конец очереди (enqueue ) и удалять первый элемент (dequeue ).

Временная сложность очереди ╔═══════════╦═════════════════╦═══════════════╗ ║ Алгоритм ║Среднее значение ║ Худший случай ║ ╠═══════════╬═════════════════╬═══════════════╣ ║ Space ║ O(n) ║ O(n) ║ ║ Search ║ O(n) ║ O(n) ║ ║ Insert ║ O(1) ║ O(1) ║ ║ Delete ║ O(1) ║ O(1) ║ ╚═══════════╩═════════════════╩═══════════════╝

Упражнения от freeCodeCamp

Множества



Так выглядит множество

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

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

Упражнения от freeCodeCamp

Map

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

Так устроена структура map

Упражнения от freeCodeCamp

Хэш-таблицы

Так работают хэш-таблица и хэш-функция

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

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

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

Временная сложность хэш-таблицы ╔═══════════╦═════════════════╦═══════════════╗ ║ Алгоритм ║Среднее значение ║ Худший случай ║ ╠═══════════╬═════════════════╬═══════════════╣ ║ Space ║ O(n) ║ O(n) ║ ║ Search ║ O(1) ║ O(n) ║ ║ Insert ║ O(1) ║ O(n) ║ ║ Delete ║ O(1) ║ O(n) ║ ╚═══════════╩═════════════════╩═══════════════╝

Упражнения от freeCodeCamp

Двоичное дерево поиска


Двоичное дерево поиска

Дерево - это структура данных, состоящая из узлов. Ей присущи следующие свойства:

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

Временная сложность двоичного дерева поиска ╔═══════════╦═════════════════╦══════════════╗ ║ Алгоритм ║Среднее значение ║Худший случай ║ ╠═══════════╬═════════════════╬══════════════╣ ║ Space ║ O(n) ║ O(n) ║ ║ Search ║ O(log n) ║ O(n) ║ ║ Insert ║ O(log n) ║ O(n) ║ ║ Delete ║ O(log n) ║ O(n) ║ ╚═══════════╩═════════════════╩══════════════╝


Упражнения от freeCodeCamp

Префиксное дерево

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

Так устроено префиксное дерево

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

Посмотрите на иллюстрацию и попробуйте составить слова. Всегда начинайте с корневого узла вверху и спускайтесь вниз. Это дерево содержит следующие слова: ball, bat, doll, do, dork, dorm, send, sense.

Упражнения от freeCodeCamp

Двоичная куча

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


Так устроены минимальная и максимальная кучи

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

Порядок уровней в двоичной куче важен, в отличие от порядка узлов на одном и том же уровне. На иллюстрации видно, что в минимальной куче на третьем уровне значения идут не по порядку: 10, 6 и 12.


Временная сложность двоичной кучи ╔═══════════╦══════════════════╦═══════════════╗ ║ Алгоритм ║ Среднее значение ║ Худший случай ║ ╠═══════════╬══════════════════╬═══════════════╣ ║ Space ║ O(n) ║ O(n) ║ ║ Search ║ O(n) ║ O(n) ║ ║ Insert ║ O(1) ║ O(log n) ║ ║ Delete ║ O(log n) ║ O(log n) ║ ║ Peek ║ O(1) ║ O(1) ║ ╚═══════════╩══════════════════╩═══════════════╝

Упражнения от freeCodeCamp

Граф

Графы - это совокупности узлов (вершин) и связей между ними (рёбер). Также их называют сетями.

Графы делятся на два основных типа: ориентированные и неориентированные. У неориентированных графов рёбра между узлами не имеют какого-либо направления, тогда как у рёбер в ориентированных графах оно есть.

Чаще всего граф изображают в каком-либо из двух видов: это может быть список смежности или матрица смежности.


Граф в виде матрицы смежности

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

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

Существуют специальные алгоритмы для просмотра рёбер и вершин в графах - так называемые алгоритмы обхода. К их основным типам относят поиск в ширину (breadth-first search ) и в глубину (depth-first search ). Как вариант, с их помощью можно определить, насколько близко к корневому узлу находятся те или иные вершины графа. В видео ниже показано, как на JavaScript выполнить поиск в ширину.

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

§ по способу связи (конфигурации);

§ по объектам формирования.

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

Известны следующие типы конфигурации структур:

цепная. Разомкнутая конфигурация. Основана на линейной связи. Может иметь различную пространственную ориентацию: вертикальную (рис. 6а), горизонтальную (рис. 6б) и вертикально-горизонтальную (рис. 6в). Может базироваться как на последовательном, так и на встречном и расходящемся соединениях.

Рис. 6. Цепная разомкнутая структура:

а – вертикальная; б – горизонтальная (одного уровня); в – вертикально-горизонтальная

кольцевая (рис. 7). Замкнутая децентрализованная конфигурация. Основана на последовательной связи (например, структура творческой исследовательской группы: разработка программы исследования (ведущий специалист) → последовательное проведение исследований (все члены группы) → обобщение результатов (вновь ведущий специалист);

Рис. 7. Кольцевая (цепная замкнутая) структура

звездная (рис. 8а). Разомкнутая конфигурация. Характерны четкая централизация и отсутствие периферийных связей. Сформирована на основе расширяющего (структура руководства) или сужающего (структура обратной связи) соединения. Может использоваться в жестко централизованных управленческих системах со слабым делегированием полномочий, а также в качестве центрального элемента любых централизованных структур. Усиление централизации может достигаться за счет «удлинения лучей», исходящих из центра «звезды» (рис. 8б);

Рис. 8. Звездная структура:

а – с коротким (одинарным) лучом; б – с удлиненным (двойным, тройным) лучом

«колесо» (рис. 9а). Замкнутая централизованная конфигурация. Представляет синтез кольцевой и звездной конфигураций. Помимо централизованных имеет еще и развитые периферийные связи. Структуры данной конфигурации относятся к довольно распространенным. Такой может быть, например, структура управления фирмой: централизованное управление подразделениями из единого центра и периферийные связи между самими подразделениями;



«двойное кольцо» (рис. 9б). Замкнутая конфигурация. Сформирована на основе расширяющих и сужающих соединений. Выраженная централизация отсутствует. Но и вполне децентрализованной такая конфигурация не является, поскольку имеется относительный центр, заключенный во внутреннем кольце, и относительная периферия, включенная во внешнем кольце. Подобные структуры характерны для организаций, управление которыми осуществляет совет, каждый член которого курирует какое-то определенное направление деятельности;

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

Рис. 9. Конфигурации «колесо» и «кольцо»

а – конфигурация «колесо»; б – «двойное колесо»; в – «колесо с двойным ободом»

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

Рис. 10. Веерная конфигурация

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

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

2.Централизованная аналогична конфигурации «колесо» также с полным развертыванием периферийных связей (рис. 11б). Например, производственные бригады с полной взаимозаменяемостью работников или исследовательские группы, не имеющие ярко выраженной специализации исполнителей по видам работ, при условии, что в этих коллективах имеются ярко выраженные руководители-координаторы;

сотовая (рис. 12). Децентрализованная конфигурация с высокой степенью регламентированности связей сформирована на основе разных типов соединений. В завершенном виде является замкнутой. Например, структура системы формирования, хранения и использования конфиденциальной информации;

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

Рис. 13. Сложная структура, основанная на нескольких базисных конфигурациях

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

Классификация структур по содержанию и функциональному назначению связей осуществляется по следующим признакам :

§ по роду связей;

§ по сферам функционирования организации;

§ по типу департаментизации.

По роду связей структуры подразделяются на следующие группы :

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

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

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

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

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

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

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

F экономическая (установление соотношений между различного рода экономическими ресурсами по предприятию в целом и по отдельным его подразделениям);

F социально-психологическая (совокупность вертикальных и горизонтальных связей организации, функционирующей как социально-психологическая система);

F структуры материальных и информационных потоков.

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

1. выделение однородных подразделений, не имеющих выраженной функциональной специализации;

2. выделение функционально-специализированных подразделений.

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

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

Рис. 15. Линейная организационная структура управления

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

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

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

Функциональная структура управления (рис. 16) – совокупность подразделений специализированных на выполнение конкретных видов работ, необходимых для принятия решений в системе линейного управления.

Рис. 16. Функциональная организационная структура управления

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

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

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

Рис. 17. Линейно-функциональная структура управления

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

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

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

Рис. 18. Линейно-штабная структура управления

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

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

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

Дивизиональные структуры бывают:

F организованные по видам товаров и услуг или группам покупателей (продуктовая), рис. 19;

F организованные по географическим регионам (региональная), рис. 20;

F сочетающие как продуктовый, так и территориальный принципы построения (смешанные), рис. 21.

Рис. 19. Продуктовая дивизиональная организационная структура

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

Рис. 20. Региональная дивизиональная организационная структура

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

Рис. 21. Смешанная дивизиональная организационная структура

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

Рис. 22. Органическая структура предприятия, состоящая из рабочих групп (бригад)

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

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

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

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

Рис. 23. Матричная структура управления

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

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

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

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

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

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

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

  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» ) – характеризуется наличием на рынке одного-единственного продавца уникального (не имеющей близких заменителей) товара.

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

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

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

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

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

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

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

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


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


© 2024
reaestate.ru - Недвижимость - юридический справочник