sonyps4.ru

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Формы организации системы менеджмента

План лекции:

Понятие и основные элементы организационной структуры

Виды Иерархических структур, их характеристики, достоинства и недостатки;

ВИДЫ АДАПТИВНЫХ СТРУКТУР, их характеристики, достоинства и недостатки.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Основным принципом построения линейной структуры управления является вертикальная иерархия, т.

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

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

· единство распорядительства, простота и четкость подчинения;

· полная ответственность руководителя за результаты деятельности подчиненных ему подразделений;

· оперативность в принятии решений;

· согласованность действий исполнителей.

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

К недостаткам этого вида структуры относят:

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

· высокие требования к квалификации руководителя;

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

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

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

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


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

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


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

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

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

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

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

К недостаткам линейно-функциональных структур относят:

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

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

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

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

· слабую инновационную и предпринимательскую реакцию компании.

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

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

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

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

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

2) организационные, ориентированные на потребителя;

3) дивизионально-региональные.

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


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

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

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



Рис. 5. Дивизиональная структура управления, ориентированная на потребителя

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

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

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

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

· ориентирует на достижение конечных результатов деятельности компании;

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

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

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

· предоставляет возможность улучшения коммуникаций.

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

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

· противопоставление целей отделений общим целям развития компании;

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

· невысокая координация деятельности отделений;

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

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

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

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

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

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

Рис. 7. Проектная структура управления

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

К важнейшим преимуществам такого вида структур управления относят:

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

· комплексный подход к реализации проекта;

· большую гибкость проектных структур.

Недостатками проектной структуры управления являются:

· дробление ресурсов и усложнение поддержки развития производственного и научно-технического потенциала компании как единого целого;

· лишение работников осознания своего места в компании, так как проектные группы формируются на временной основе;

· частичное дублирование функций.

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

Рис. 8. Структура управления матричной организацией

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

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

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

Достоинствами матричной структуры являются:

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

· получение высококачественных результатов по большому числу проектов;

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

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

Перечень недостатков матричных структур включает в себя:

· сложность матричной структуры для практической реализации;

· подрыв принципа единоначалия в связи с системой двойного подчинения;

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

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

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

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

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

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

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

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

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

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

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

  • Линейные
    • Массив
    • Список
    • Связанный список
    • Очередь
    • Хэш-таблица
  • Иерархические
    • Двоичные деревья
    • N-арные деревья
    • Иерархический список
  • Сетевые
    • Простой граф
    • Ориентированный граф
  • Табличные
    • Таблица реляционной базы данных
    • Двумерный массив
  • Другие
  • Приведенная классификация далеко не полная. Элементами сложных структур данных могут выступать как экземпляры простых, так и экземпляры сложных структур данных, например структура данных лес – это список непересекающихся деревьев. Теперь постараюсь дать краткое описание перечисленным классам сложных структур данных. Первый уровень классификации построен на основе различий в способе адресации и поиска отдельных элементов в наборе сложной структуры данных.

    Линейные структуры данных

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

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

    Линейный массив.
    Адрес(элемент(index)) = размер_ячейки * index.

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

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


    Связанный список.

    Стек – это динамическая линейная структура данных, для которой определены всего две операции изменения набора элементов: добавление элемента в конец и удаление последнего элемента. Еще говорят, что стек реализует принцип LIFO (Last in, First Out) – последним пришел и первым ушел. Например, в ходе выполнения программного кода, вычислительная машина при необходимости вызвать процедуру или функцию сначала заносит указатель на место ее вызова в стек, чтобы при завершении выполнения ее кода корректно вернуться к следующей после точки вызова инструкции. Такая структура данных называется стеком вызовов подпрограмм.

    Стек.

    Очередь – очень похожая не стек, динамическая структура данных, с той лишь разницей, что она реализует принцип FIFO (First in, First out) – первым пришел и первым ушел. За примерами в реальной жизни, как понятно из названия, далеко ходить не надо. В программировании с помощью очередей, например, обрабатывают события пользовательского интерфейса, обращения клиентов к и прочие информационные запросы.

    Очередь.

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

    Иерархические структуры данных

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

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

    • прямой или префиксный
      {узел, левое поддерево, правое поддерево};

    • обратный или постфиксный
      {левое поддерево, правое поддерево, узел};

    • симметричный или инфиксный
      {левое поддерево, узел, правое поддерево};

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


    Двоичное (бинарное) дерево.

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


    Иерархический список.

    Сетевые структуры данных

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

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


    Граф.

    Ориентированный граф.

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


    Оценка сложности алгоритмов

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

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

    Асимптотическая оценка сложности обозначается греческой буквой Θ (тета).

    f(n) = Θ(g(n)), если существуют c1, c2>0 и n0 такие, что c1*g(n)n0.

    Функция g(n) является асимптотически точной оценкой сложности алгоритма - функции f(n), приведенное неравенство называется асимптотическим равенством, а само обозначение Θ символизирует множество функций, которые растут “так же быстро”, как и функция g(n) – т.е. с точностью до умножения на константу. Как следует из приведенного неравенства, оценка Θ являет собой одновременно и верхнюю и нижнюю оценки сложности. Не всегда есть возможность получить оценку в таком виде, поэтому верхнюю и нижнюю оценки иногда определяют отдельно.

    Верхняя оценка сложности обозначается греческой буквой Ο (омикрон), и является множеством функций, которые растут не быстрее, чем g(n).

    f(n)= Ο(g(n)), если существует c>0 и n0 такие, что 0n0.

    Нижняя оценка сложности обозначается греческой буквой Ω (омега), и является множеством функций, которые растут не медленнее, чем g(n).

    f(n)= Ω(g(n)), если существует c>0 и n0 такие, что 0n0.

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

    Работа с линейными структурами данных

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Массивы.

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

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

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

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



    Загрузка...