Основные структуры данных. Типы рыночных структур: совершенная конкуренция, монополистическая конкуренция, олигополия и монополия

Подписаться
Вступай в сообщество «sinkovskoe.ru»!
ВКонтакте:
  • Перевод

Екатерина Малахова, редактор-фрилансер, специально для блога Нетологии адаптировала статью 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 выполнить поиск в ширину.

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

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

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

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

  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 используется в сетевой и иерар-хической моделях данных. В реляционной модели принята другая структуризация данных, основанная на теории множеств.

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

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

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

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

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

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

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

Массивы.

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

Первые имеют один индекс, вторые – два. Пусть одномерный массив называется 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.

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

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

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

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

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

Достоинства функциональной структуры управления:

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

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

Недостатки этого вида организационной структуры:

Нарушение принципа полноправного распорядительства, принципа единоначалия;

Длительная процедура принятия управленческих решений;

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

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

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

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

Так, например, в ОАО «АВТОВАЗ» функциональная структура управления при-меняется в обобщенной структуре, вспомогательных производствах, станкостроении. Пример функциональной организационной структуры представлен на рис. 2.6.


Рис. 2.6. Пример функциональной организационной структуры

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

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


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

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

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

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

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

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

Таким образом, к основным преимуществам линейно-функциональных структур можно отнести:

Стимулирование деловой и профессиональной специализации в условиях этой структуры управления;

Высокая производственная реакция организации, так как она построена на узкой специализации производства и квалификации специалистов;

Уменьшение дублирования усилий в функциональных областях;

Улучшение координации деятельности в функциональных областях.

Несмотря на самое широкое распространение линейно-функциональных структур управления, отметим вместе с тем их существенные недостатки:

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

Отсутствие тесных взаимосвязей и взаимодействия на горизонтальном уровне между подразделениями;

Резкое увеличение объема работы руководителя организации и его заместителей из-за необходимости согласования действий разных ункциональных служб;

Чрезмерно развитая система взаимодействия по вертикали;

Утрата гибкости во взаимоотношениях работников аппарата управления из-за применения формальных правил и процедур;

Слабая инновационная и предпринимательская реакция организации с такой организационной структурой управления;

Неадекватное реагирование на требования внешней среды;

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

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

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

Учитывая все вышеперечисленные недостатки, важно выяснить, при каких условиях они сглаживаются:

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

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

Они наиболее эффективны при хозяйственном механизме затратного типа, когда производство наименее восприимчиво к прогрессу в области науки и техники;

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

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

В ОАО «АВТОВАЗ» базовым типом структуры управления, по которой организовано большинство структурных подразделений, остается линейно-функциональный. Пример линейно-функциональной структуры управления представлен на рис. 2.8.


Рис. 2.8. Пример линейно-функциональной структуры управления

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

Американская корпорация «Дженерал Моторс» была одной из первых организаций, которой удалось преодолеть ограниченность линейно-функциональной структуры. В условиях диверсифицированного производства было решено значительно расширить самостоятельность крупных подразделений и предоставить им право самим реагировать на конъюнктуру рынка, превратить их в «центры прибыли». Это смелое управленческое решение было предложено и реализовано президентом компании А. Слоуном, назвавшим новую структуру «скоординированной децентрализацией». В дальнейшем такая организационная структура по-лучила название дивизиональной.

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

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

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

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

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

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

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

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

Продуктовому - с учетом особенностей выпускаемой продукции или предоставляемых услуг;

По ориентации на конкретного потребителя;

Региональному - в зависимости от обслуживаемых территорий.

Выделяют три типа дивизиональных структур:

Дивизионально-продуктивные структуры;

Организационные структуры, ориентированные на потребителя;

Дивизионально-региональные структуры.

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


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

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

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

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

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


Рис. 2.10. Пример продуктовой дивизиональной структуры

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

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


Рис. 2.11. Дивизионально-региональная структура

Пример конкретной региональной дивизиональной структуры, реализованной на ОАО «АВТОВАЗ» в системе управления поставками на внутренний рынок, представлен на рис. 2.12.


Рис. 2.12. Пример региональной дивизиональной структуры ОАО «АВТОВАЗ»

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

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

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


Рис. 2.13. Глобально ориентированная продуктовая (товарная) структура

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


Рис. 2.14. Глобально ориентированная региональная структура

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

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

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

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

Уменьшение сложности управления, с которой сталкиваются управляющие высшего звена;

Отделение оперативного управления от стратегического, в результате чего высшее руководство организации концентрируется на стратегическом планировании и управлении;

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

Улучшение коммуникаций;

Развитие широты мышления, гибкости восприятия и предприимчивости руководителей отделений (дивизионов).

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

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

Противопоставление целей отделений общим целям развития организации, несовпадение интересов «верхов» и «низов» в многоуровневой иерархии;

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

Невысокая координация деятельности отделений (дивизионов), штабные службы разобщены, горизонтальные связи ослаблены;

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

Увеличение затрат на содержание управленческого аппарата вследствие дублирования одних и тех же функций в подразделениях и соответствующего увеличения численности персонала;

Затруднение осуществления контроля сверху донизу;

Многоуровневая иерархия и в рамках самих отделений (дивизионов), действие всех недостатков линейно-функциональных структур;

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

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

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

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

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

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

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

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

Таблица 2.4 Сравнительный анализ экономических характеристик оргструктур


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

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

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

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


Рис. 2.15. Функциональная структура предприятия


Рис. 2.16. Дивизиональная структура предприятия


Рис. 2.17. Модель матричной структуры

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

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

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

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

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

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

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


(Материалы приведены на основании: Основы менеджмента. Под ред. А. И. Афоничкина. – СПб.: Питер, 2007)

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

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

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

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

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

К положительным сторонам линейной структуры относятся следующие:

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

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

Функциональная структура управления

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

Достоинства функциональной структуры управления:

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

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

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

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

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

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

В данной структуре объединяются преимущества линейной и функциональной структур.

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

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

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

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

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

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

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

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

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

Вместе с тем применение данной структуры сопряжено с рядом трудностей.

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

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

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

Дивизиональная структура управления

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

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

Дивизиональная структура управления имеет ряд разновидностей. К основным из них относятся следующие типы:

  • региональная;
  • продуктовая;
  • потребительская.

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

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

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

Такой тип управления характерен для компаний с широко дифференцированный ассортиментом продукции.

Применяя продуктовую структуру, крупная компания может уделять конкретной продукции столько же внимания, сколько ей уделяют фирмы, выпускающие один-два вида продукции.

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

← Вернуться

×
Вступай в сообщество «sinkovskoe.ru»!
ВКонтакте:
Я уже подписан на сообщество «sinkovskoe.ru»