Перейти к основному содержанию
Почему HTML? Назад к аннотации Скачать PDF
Лицензия: CC BY-NC-ND 4.0
arXiv:2603.07845v1 [cs.SI] 08 Mar 2026

Теория и практика вычисления bus-factor

Журнал: Information Sciences
Себастьяно А. Пикколо Электронная почта: sebastiano.piccolo@unical.it Автор для корреспонденции: Автор для корреспонденции Аффилиация: Департамент математики и компьютерных наук, Университет Калабрии, Виале П. Буччи, Ренде, Козенца, 87036, Италия    Паскуале Де Мео Электронная почта: pdemeo@unime.it Аффилиация: DICAM, Мессинский университет, 98122, Мессина, Италия    Джорджо Террачина Электронная почта: giorgio.terracina@unical.it Аффилиация: DeMaCS, Университет Калабрии, Виале П. Буччи, Ренде, Козенца, 87036, Италия    Джанлуиджи Греко Электронная почта: gianluigi.greco@unical.it Аффилиация: DeMaCS, University of Calabria, Viale P. Bucci, Rende, Cosenza, 87036, Italy
Аннотация

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

Ключевые слова: 
Фактор автобуса , Двудольные графы , Устойчивость сети , Максимальное избыточное множество , Минимальное критическое множество

1 Введение

Автобусный фактор (также известный как фактор грузовика) проекта неформально определяется как количество людей, которые должны исчезнуть — как если бы их сбил автобус — из проекта, пока проект не застопорится или не столкнется со значительной задержкой, либо из-за нехватки знающего персонала [31], либо из-за высокой фрагментации проекта [22].

Многие проекты демонстрируют крайне неравномерное распределение труда, при котором небольшая часть людей отвечает за большую часть общего объема работы [30]. Следовательно, даже недоступность небольшого числа специалистов может иметь серьезные последствия для завершения проекта. Таким образом, bus-factor отражает реальный риск для организаций и проектов, и его практическая значимость получила широкое признание [16].

Несмотря на свою интуитивную привлекательность, вычисление bus factor сопряжено с несколькими нетривиальными проектными решениями, включая то, как моделировать проекты, как представлять знания контрибьюторов и как определять остановку проекта [25]. Существующие подходы различаются в базовом осмыслении bus factor. В частности, bus factor понимается либо с точки зрения избыточности, количественно определяя, сколько людей могут безопасно покинуть проект без ущерба для него [31], либо с точки зрения критичности, количественно определяя наименьший набор участников, уход которых поставит под угрозу проект [5].

Такое концептуальное различие может привести к заметно отличающимся оценкам bus factor для одного и того же проекта [11]. Кроме того, существующие подходы зависят от использования ими артефактов, специфичных для конкретной предметной области, в частности метаданных GitHub: одни подходы учитывают только коммиты [5], другие учитывают владение файлами [31], некоторые используют всю историю [10], а третьи придают больший вес более свежим коммитам или вкладам [16]. Эта гетерогенность затрудняет оценку и интерпретацию различных подходов к оценке bus factor.

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

Данная концептуальная схема показывает, что предыдущие подходы, основанные на покрытии задач и фиксированных пороговых значениях для определения сбоя проекта, не способны отразить фрагментацию проекта и роль интеграторов [22] — участников, отсутствие которых разъединяет в остальном независимые компоненты проекта. Рис. 1 иллюстрирует эту уязвимость.

Рассмотрим учебный проект, представленный в виде двудольного графа людей и задач (рис. 1A). Проект устроен так, что зависит от единственного интегратора, человека p1p_{1}, который объединяет четыре проектных модуля, определяемых каждой задачей t1,…,t4t_{1},\dots,t_{4}. Интуитивно понятно, что как только p1p_{1} уходит, проект распадается на четыре изолированных модуля, каждый из которых состоит из одной задачи и двух человек. В таком фрагментированном состоянии недоступность хотя бы еще одного человека подвергает проект риску, так как задача тогда может опираться всего на одного участника. Следовательно, bus factor этого проекта должен составлять от двух до трех человек.

Однако, если мы применим любое из вышеупомянутых определений, то обнаружим, что MRS оценивает bus-factor в 8 человек (Рис. 1B), в то время как MCS определяет bus-factor в 7 человек (Рис. 1C). Это завышение оценки является прямым следствием как условия остановки, определяемого через пороговое значение, так и того факта, что меры на основе покрытия не учитывают интеграторов. Это подчеркивает ограничения мер и пороговых значений на основе покрытия и обуславливает необходимость формулировки bus-factor, способной учитывать фрагментацию проекта при уходе участников.

⟦Figure 1: Визуальное сравнение мер для оценки bus-factor проекта. Рассмотрим игрушечный проект в A). Когда p1p_{1} уходит, проект распадается на четыре несвязных компонента. При дальнейших удалениях задачи быстро начинают критически зависеть от отдельных контрибьюторов. B) Максимальный избыточный набор (MRS) оценивает bus-factor в 8 путем удаления избыточных контрибьюторов. C) Минимальный критический набор (MCS) оценивает bus-factor в 7 путем применения порога покрытия без учета топологии проекта. D) Наша мера на основе робастности фиксирует фрагментацию путем оценки наибольшего числа задач, которые остаются связанными в едином компоненте при уходе людей; это дает нормализованный, не зависящий от порогов bus-factor, соответствующий интуиции проекта.

В этой статье мы разрабатываем такую меру (далее именуемую Robustness), черпая вдохновение из устойчивости сетей и заменяя покрытие задач наибольшим числом задач, связанных с одним компонентом (Рис. 1D). Кроме того, мы избегаем необходимости использования фиксированных пороговых значений путем вычисления площади под кривой затухания максимального числа связанных задач по мере постепенного удаления людей из графа проекта (Рис. 1D1). Мы нормализуем эту площадь, разделяя ее на теоретический максимум, полученный на полносвязном двудольном графе с тем же количеством людей и задач. Наша мера дает нам нормализованную оценку 0.250.25 или, что эквивалентно, bus-factor из 2.252.25 человек, что согласуется с тем, чего мы ожидали от нашей интуиции.

Помимо представления единой теоретической основы для вычисления bus-factor и новой меры, в данной статье дается теоретическое обоснование определений bus-factor, устанавливается их вычислительная сложность, предлагаются масштабируемые алгоритмические приближения и оценивается их практическое поведение посредством систематического экспериментального и чувствительного анализа, руководствующегося теорией управления проектами. Мы надеемся, что эта статья может послужить отправной точкой для исследователей и практиков, интересующихся изучением мер bus-factor. Чтобы облегчить этот процесс и будущие исследования в данной области, мы делаем наш код и сгенерированные данные общедоступными 11 1 https://github.com/sapiccolo/BusFactorX.

Краткое описание вклада

Мы моделируем проект как двудольный граф G=(P,T,E)G=(P,T,E), где PP — это множество из nn человек, а TT — это множество из mm задач, и сводим вычисление коэффициента автобуса к семейству комбинаторных задач на таком графе, отделяя его определение от артефактов конкретной предметной области.

В разделе 4.1 мы разрабатываем единую, не зависящую от предметной области теоретическую основу путем формализации предыдущих подходов и установления эквивалентности между основанными на избыточности и критичности интерпретациями bus-factor (Предложение 1). Это понимание позволяет переосмыслить существующие метрики в виде двух взаимодополняющих формулировок: максимального избыточного множества (MRS), определяющего наибольшее множество участников, удаление которых не ставит под угрозу прогресс проекта, и минимального критического множества (MCS), определяющего наименьшее множество, удаление которого останавливает проект. Мы доказываем, что обе формулировки являются NP-трудными (Теоремы 1 и 2).

Опираясь на этот подход, в разделе 4.3 мы представляем новую метрику автобусного фактора (Robustness), вдохновленную надежностью сетей, которая оценивает размер наибольшего связного набора задач по мере постепенного удаления участников из графа проекта. Определяя автобусный фактор как нормированную площадь под результирующей кривой затухания, эта метрика учитывает как потерю охвата задач, так и нарастающую фрагментацию проекта. Мы доказываем, что эта формулировка также является NP-сложной (теорема 3), тем самым закрывая открытую проблему, поставленную Чжао и др. [32].

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

Наконец, в Разделе 7 мы проводим анализ чувствительности, чтобы оценить пригодность MRS, MCS и Robustness в качестве индикаторов bus factor. Мы представляем набор тестов, которые моделируют стратегии вмешательства в структуры проектов на основе ожиданий, вытекающих из теорий управления проектами. Наши результаты показывают, что Robustness стабильно согласуется с этими ожиданиями и обладает превосходной чувствительностью и практической значимостью, в то время как MRS оказывается чрезмерно оптимистичным, а MCS демонстрирует контринтуитивное поведение из-за своей неспособности отразить фрагментацию проекта.

2 Связанные работы

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

Метрики фактора автобуса на основе артефактов и специфичные для GitHub

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

Зазворка и др. [31] представили семейство мер на основе покрытия, определяя проект как безопасный, если заданный процент файлов остается покрытым после удаления участников. Хотя этот подход концептуально привлекателен, он явно не моделирует знания разработчиков [25] и становится вычислительно невозможным для проектов с более чем несколькими дюжинами участников [13].

Последующие работы уточнили методы оценки знаний разработчиков. Косентино и др. [10] ввели понятия первичных и вторичных разработчиков на основе порогов вклада, в то время как Авелино и др. [5] предложили эвристику, которая итеративно удаляет наиболее знающего разработчика, измеряемого с помощью степени авторства (Degree of Authorship, DoA), до тех пор, пока более 50% файлов не окажутся заброшенными. Впоследствии эта эвристика была принята в ряде последующих исследований [16].

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

К доменно-агностической мере фактора автобуса

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

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

Сетевая надежность и устойчивость проектов

Проблема оценки уязвимости проекта при потере участников тесно связана с изучением робастности сетей, которая исследует, как функциональность сети ухудшается по мере удаления узлов или ребер. Основополагающая работа Альберта и др. [3] показала, что сети с гетерогенным распределением степеней устойчивы к случайным сбоям, но крайне уязвимы к целенаправленным атакам на узлы с высокой степенью. Такое поведение наблюдалось в заметно различающихся системах, включая Интернет [3], криминальные сети [1] и инженерные системы [22]. Эта универсальность делает робастность сетей идеальной отправной точкой для построения теории оценки bus-factor.

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

Несмотря на эти достижения, классические меры робастности неприменимы напрямую для оценки bus-factor. Они обычно рассматривают все узлы как эквивалентные и сфокусированы на достижимости узлов, в то время как проектные сети демонстрируют присущую асимметрию между контрибьюторами и задачами. Более того, меры робастности редко нормируются таким образом, чтобы обеспечивать содержательные сравнения между проектами разного размера.

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

Синтез

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

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

3 Предварительные сведения

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

Граф представляет собой пару G=(V,E)G=(V,E), где VV — это множество вершин, а E⊆V×VE\subseteq V\times V — это множество ребер. Граф задается с помощью матрицы смежности AA, причем Ai​j=1A_{ij}=1, если вершины ii и jj соединены, и Ai​j=0A_{ij}=0 в противном случае. Степень kik_{i} вершины ii — это количество соединенных с ней вершин, то есть ki=∑jAi​jk_{i}=\sum_{j}A_{ij}.

Подграф графа GG представляет собой граф, индуцированный подмножеством S⊆VS\subseteq V вершин графа GG, и обозначается как G⁡[S]G[S]. Связанная компонента графа представляет собой максимальный связный подграф. Полностью связанный подграф называется кликой. Множество узлов, включающее по меньшей мере один конец каждого ребра графа GG, называется вершинным покрытием.

Если множество вершин VV может быть разделено на два множества V1V_{1} и V2V_{2} с V1∩V2=∅V_{1}\cap V_{2}=\emptyset и V1∪V2=VV_{1}\cup V_{2}=V, таким образом, что ∀(i,j)∈E​i∈V1∧j∈V2\forall(i,j)\in E\;i\in V_{1}\wedge j\in V_{2}, то граф называется двудольным. В оставшейся части данной статьи мы обозначаем двудольный граф как кортеж 𝒢=(V1,V2,E)\mathcal{G}=(V_{1},V_{2},E).

Чтобы установить NP-трудность вычисления bus-factor в различных формулировках, мы используем сведения к известным NP-трудным задачам. Мы используем следующие задачи, формально определенные ниже. Доказательства их NP-трудности можно найти в Garey and Johnson [12].

Set Cover

Дано множество UU из nn элементов, семейство ℱ={X1,X2,…,Xm}\mathcal{F}=\{X_{1},X_{2},\dots,X_{m}\} из mm подмножеств UU такое, что ⋃iXi=U\bigcup_{i}X_{i}=U, и положительное целое число k≤mk\leq m, существует ли подмножество S⊆ℱS\subseteq\mathcal{F} с |S|≤k|S|\leq k такое, что ⋃s∈Ss=U\bigcup_{s\in S}s=U?

Clique

Учитывая неориентированный граф G=(V,E)G=(V,E) и положительное целое число k≤|V|k\leq|V|, содержит ли GG клику размера по меньшей мере kk⟧?

Vertex Cover

Учитывая неориентированный граф G=(V,E)G=(V,E) и положительное целое число k≤|V|k\leq|V|, содержит ли GG вершинное покрытие размером не более kk⟧?

4 Теория вычисления автобусного фактора

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

Нашей отправной точкой является представление проекта в виде двудольного графа G=(P,T,E)G=(P,T,E), где PP — это множество из nn человек, TT — это множество из mm задач, а EE — это множество ребер, которые представляют назначение людей на задачи. В определенных проектах, таких как проекты с открытым исходным кодом и большим числом добровольных участников, не каждый человек вносит значимый вклад в каждый файл, который он редактирует. Например, человек может лишь обновить сведения о лицензии в файле. Для решения этой проблемы могут применяться предметно-ориентированные стратегии фильтрации графов, при которых ребро между человеком и задачей удаляется, если этот человек не обладает достаточными знаниями о задаче. Например, специфичные для GitHub эвристики, известные как степень авторства (Degree of Authorship, DoA) [16], которые предназначены для выявления значимых участников для каждого файла исходного кода, естественным образом становятся стратегиями фильтрации графов в нашей структуре.

Мы теперь рассматриваем существующие подходы к вычислению bus-factor и формализуем их как две комбинаторные задачи на двудольных графах.

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

Зазворка и др. [31] первыми рассмотрели задачу вычисления фактора автобуса и определили следующее семейство мер:

Zα,t​(G)=max⁡{k∈ℕ:covα​(G,k)≥t​m}Z_{\alpha,t}(G)=\max\{k\in\mathbb{N}:\mathrm{cov}_{\alpha}(G,k)\geq tm\} (1)

с функцией агрегации α∈{min,max,avg}\alpha\in\{\mathrm{min,max,avg}\} и 0<t≤10<t\leq 1. Следовательно, covα​(G,k)\mathrm{cov}_{\alpha}(G,k) указывает на минимальное, максимальное или среднее покрытие GG — то есть минимальное/максимальное/среднее число задач, которые все еще покрыты — после удаления любого подмножества из kk человек. Поскольку Zavg,t​(G)Z_{\mathrm{avg},t}(G) оказалось неадекватным [13], мы не рассматриваем его здесь и ограничиваем наш анализ Zmin,t​(G)Z_{\mathrm{min},t}(G) и Zmax,t​(G)Z_{\mathrm{max},t}(G). Интуитивно, Ур. 1 определяет bus-factor в терминах структурно избыточных людей, которые могут покинуть проект без ущерба для него. Чем выше число структурно избыточных людей, тем выше bus-factor.

Авелино и др. [5], напротив, неформально определили bus-factor как наименьшее число людей, уход которых изолирует более чем долю tt задач, где tt представляет собой пороговое значение, определяющее, когда проект считается застопорившимся. Мы формализуем определение Авелино и др. как задачу поиска Минимального критического множества, определяемого следующим образом:

M​C​St​(G)=minX⊆P⁡|X|,ϕ⁡(G⁡[P∖X])>t​mMCS_{t}(G)=\min_{X\subseteq P}|X|,\quad\phi(G[P\setminus X])>tm (2)

где 0<t<10<t<1 и ϕ⁡(G)\phi(G) возвращают количество изолированных задач в GG. Обратите внимание, что уравнение 2 отражает неформальное представление о том, что bus-factor — это минимальное число людей, которые должны стать недоступными, чтобы проект остановился. Чем больше минимальный критический набор, тем выше bus-factor.

Теперь мы доказываем следующее соотношение между Zmin,t​(G)Z_{\min,t}(G) и M​C​St​(G)MCS_{t}(G).

Proposition 1.

⟦Zmin,t​(G)=M​C​S1−t​(G)−1Z_{\min,t}(G)=MCS_{1-t}(G)-1, for all 0<t<10<t<1.

Доказательство.

Напомним, что

Zmin,t​(G)=max⁡{k∈ℕ:covmin​(G,k)≥t​m}.Z_{\min,t}(G)=\max\{k\in\mathbb{N}:\mathrm{cov}_{\min}(G,k)\geq tm\}.

Функция covmin​(G,k)\mathrm{cov}_{\min}(G,k) возвращает минимальное количество задач, которые все еще покрыты хотя бы одним человеком после удаления kk человек. То есть,

covmin​(G,k)=minC⊆P,|C|=k⁡m−ϕ⁡(G⁡[P∖C]).\mathrm{cov}_{\min}(G,k)=\min_{C\subseteq P,\;|C|=k}m-\phi(G[P\setminus C]).

Следовательно, мы можем переписать Zmin,t​(G)Z_{\min,t}(G) следующим образом:

Zmin,t​(G)\displaystyle Z_{\min,t}(G) =maxk∈ℕ⁡minC⊆P,|C|=k​m−ϕ⁡(G⁡[P∖C])≥t​m\displaystyle=\max_{k\in\mathbb{N}}\min_{C\subseteq P,\;|C|=k}m-\phi(G[P\setminus C])\geq tm
=maxk∈ℕ⁡minC⊆P,|C|=k⁡ϕ⁡(G⁡[P∖C])≤m−t​m\displaystyle=\max_{k\in\mathbb{N}}\min_{C\subseteq P,\;|C|=k}\phi(G[P\setminus C])\leq m-tm
=maxk∈ℕ⁡minC⊆P,|C|=k⁡ϕ⁡(G⁡[P∖C])≤m⁡(1−t).\displaystyle=\max_{k\in\mathbb{N}}\min_{C\subseteq P,\;|C|=k}\phi(G[P\setminus C])\leq m(1-t).

Напомним, что M​C​S1−t​(G)MCS_{1-t}(G) — это минимальное количество людей, изолирующее более чем m⁡(1−t)m(1-t) задач. То есть M​C​S1−t​(G)MCS_{1-t}(G) представляет собой наименьшее k∈ℕk\in\mathbb{N}, для которого minC⊆P,|C|=k⁡ϕ⁡(G⁡[P∖C])>m⁡(1−t)\min_{C\subseteq P,\;|C|=k}\phi(G[P\setminus C])>m(1-t). Таким образом, Zmin,t​(G)=M​C​S1−t​(G)−1Z_{\min,t}(G)=MCS_{1-t}(G)-1. ∎

Обратите внимание, что Zmin,t​(G)Z_{\min,t}(G) также определен для t=1t=1, то есть это минимальное число людей, которых нужно удалить, чтобы оставшееся покрытие стало меньше mm. Этот случай не представляет особого интереса и легко решается, так как в нем требуется изолировать отдельную задачу с помощью минимального количества людей, а именно задачу с наименьшей степенью..

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

Theorem 1.

Минимальный критический набор является NP-сложным.

Доказательство.

Задача Минимального критического множества является задачей оптимизации. Чтобы показать, что она является NP-сложной, мы показываем, что ее разрешимая версия (то есть задача, предполагающая ответ да/нет), которую мы называем Критическим множеством, является NP-полной. В задаче Критическое множество нам заданы двудольный граф G=(P,T,E)G=(P,T,E), положительное целое число kk и вещественное число 0<t<10<t<1, и мы спрашиваем, существует ли такое множество X⊆PX\subseteq P с |X|≤k|X|\leq k, для которого ϕ⁡(G⁡[P∖X])>t​m\phi(G[P\setminus X])>tm. Задача Критическое множество принадлежит классу NP, поскольку кандидат в решение XX может быть верифицирован за полиномиальное время путем вычисления индуцированного подграфа G⁡[P∖X]G[P\setminus X], подсчета количества изолированных задач и проверки того, превышает ли это число t​mtm.

Мы доказываем, что Critical Set является NP-трудной задачей, путем сведения к ней задачи Clique. В задаче Clique для заданного простого неориентированного графа G′=(V′,E′)G^{\prime}=(V^{\prime},E^{\prime}) и положительного целого числа k′<|V′|k^{\prime}<|V^{\prime}| требуется определить, существует ли полносвязный подграф размером не менее k′k^{\prime}. Мы сводим задачу Clique к Critical Set следующим образом: мы создаем двудольный граф GG, где P=V′,T=E′P=V^{\prime},T=E^{\prime}, E={(a,b),a∈P,b∈Tiff​a​is an endpoint of​b}E=\left\{(a,b),a\in P,b\in T\quad\text{iff}\;a\;\text{is an endpoint of}\;b\right\}, k=k′k=k^{\prime} и t=k⁡(k−1)−22​|T|t=\frac{k(k-1)-2}{2|T|} (рис. 2A).

В данном экземпляре задачи критического множества мы ставим вопрос о том, существует ли подмножество C⊆PC\subseteq P размера не более kk такое, что ϕ⁡(G⁡[P∖C])>t​|T|=k⁡(k−1)−22​|T||T|=k⁡(k−1)−22\phi(G[P\setminus C])>t|T|=\frac{k(k-1)-2}{2|T|}|T|=\frac{k(k-1)-2}{2}. Этот экземпляр задачи критического множества имеет положительный ответ тогда и только тогда, когда исходный экземпляр задачи о клике содержит клику размера не менее kk. Если G′G^{\prime} имеет клику размера не менее kk, то тот же набор узлов образует решение соответствующего экземпляра задачи критического множества. Действительно, клика из kk узлов является единственным подграфом на kk узлах, который содержит ровно k⁡(k−1)/2k(k-1)/2 ребер. Поскольку в нашей двудольной конструкции мы имеем P=V′P=V^{\prime} и T=E′T=E^{\prime}, тот же набор узлов в клике G′G^{\prime} соответствует подмножеству C⊆PC\subseteq P такому, что ϕ⁡(G⁡[P∖C])>k⁡(k−1)−22​|T|​|T|>k⁡(k−1)−22\phi(G[P\setminus C])>\frac{k(k-1)-2}{2|T|}|T|>\frac{k(k-1)-2}{2}.

С другой стороны, если двудольный граф GG допускает критическое множество CC размера не более kk такое, что ϕ⁡(G⁡[P∖C])>k⁡(k−1)−22\phi(G[P\setminus C])>\frac{k(k-1)-2}{2}, то это множество из kk узлов из PP изолирует по меньшей мере k⁡(k−1)/2k(k-1)/2 узлов в TT. Однако по построению, и поскольку G′G^{\prime} является простым и неориентированным, подграф из kk узлов в G′G^{\prime} может содержать не более k⁡(k−1)/2k(k-1)/2 рёбер. Это означает, что множество CC должно состоять ровно из kk узлов и изолировать ровно k⁡(k−1)/2k(k-1)/2 узлов в TT. Следовательно, CC соответствует клике из kk узлов в G′G^{\prime}.

В результате Клике ≤p\leq_{\mathrm{p}} Critical Set, и следовательно Critical Set является NP-полной. ∎

⟦Figure 2: Визуализация сведений к задачам класса NP-трудности. А) Сведение задачи о клике к задаче о минимальном критическом множестве (решения выделены): узлы исходного графа становятся левым множеством вершин (PP) в двудольной конструкции, а ребра — правым множеством вершин (TT). Ребра в двудольном графе представляют инцидентность исходного графа. Клика в исходном графе соответствует минимальному критическому множеству в двудольном графе. B) Сведение задачи о покрытии множества к задаче о частичном покрытии множества для доказательства максимального избыточного множества: экземпляр задачи о покрытии множества, представленный здесь как двудольный граф с выделенным решением, преобразуется в экземпляр задачи о частичном покрытии множества путем добавления соответствующего количества пар вершин двудольного графа.

Как следствие предложения 1, в дополнение к минимальному критическому множеству нам нужно рассмотреть только Zmax,t​(G)Z_{\max,t}(G), которое моделирует наилучший сценарий путем определения максимального количества людей, которые могут безопасно стать недоступными, не обнажая (то есть не изолируя) более t%t\% задач. Мы формулируем эту величину как следующую задачу о максимальном избыточном множестве на двудольном графе:

M​R​St​(G)=maxX⊆P⁡|X|s.t.ϕ⁡(G⁡[P∖X])<t​m,0<t≤1.MRS_{t}(G)=\max_{X\subseteq P}|X|\quad\text{s.t.}\quad\phi(G[P\setminus X])<tm,\quad 0<t\leq 1. (3)

Обратите внимание, что MRS, определенный в ур. 3, при t=1t=1 запрашивает множество, которое является дополнением Минимального покрытия множества. Покрытие множества допускает естественное представление в виде двудольного графа G=(P,T,E)G=(P,T,E), где множество PP соответствует ℱ\mathcal{F}, множество TT соответствует универсуму UU, а ребра между PP и TT кодируют покрытие каждого подмножества в ℱ\mathcal{F}: E={(i,j)∣i∈P,j∈T,and j∈si for some si∈ℱ}E=\{(i,j)\mid i\in P,\ j\in T,\ \text{and }j\in s_{i}\text{ for some }s_{i}\in\mathcal{F}\}.

Аналогично, для порогового значения 0<t<10<t<1, задача MRS запрашивает множество, которое является дополнением частичного покрытия множествами. Учитывая универсум U={u1,u2,…,um}U=\{u_{1},u_{2},\dots,u_{m}\} из mm элементов, семейство ℱ={S1,S2,…,Sn}\mathcal{F}=\{S_{1},S_{2},\dots,S_{n}\} из nn подмножеств Si⊆US_{i}\subseteq U таких, что ⋃iSi=U\bigcup_{i}S_{i}=U, положительное целое число kk и вещественное число 0<t<10<t<1, задача частичного покрытия множествами спрашивает, существует ли подмножество X⊆ℱX\subseteq\mathcal{F} с |X|≤k|X|\leq k такое, что |⋃Xi∈XXi|≥t​m\left|\bigcup_{X_{i}\in X}X_{i}\right|\geq tm. Теперь мы доказываем следующие результаты.

Theorem 2.

Частичное покрытие множества является NP-полным.

Доказательство.

Мы доказываем, что Частичное покрытие множества является NP-полным путем сведения к нему задачи покрытия множества. Проблема Частичного покрытия множества находится в классе NP, поскольку кандидатное решение может быть верифицировано за полиномиальное время путем подсчета количества уникальных элементов, которые оно покрывает, и проверки того, составляет ли это количество как минимум t​mtm.

Предположим, нам дан экземпляр задачи покрытия множества с универсумом U′U^{\prime}, семейством подмножеств ℱ′\mathcal{F}^{\prime} и положительным целым числом k′k^{\prime}. Пусть 0<t≤10<t\leq 1. Мы преобразуем этот экземпляр в экземпляр задачи частичного покрытия множества следующим образом. Мы определяем универсум UU путем добавления ⌈mt⌉−m\lceil\frac{m}{t}\rceil-m новых элементов eie_{i} к U′U^{\prime}, и мы определяем семейство ℱ\mathcal{F} путем добавления ⌈mt⌉−m\lceil\frac{m}{t}\rceil-m подмножеств, каждое из которых равно {ei}\{e_{i}\}, к ℱ′\mathcal{F}^{\prime}. Мы также устанавливаем k=k′k=k^{\prime} (Рис. 2B).

В данном экземпляре задачи Partial Set Cover мы ставим вопрос о существовании подмножества X⊆ℱX\subseteq\mathcal{F} с |X|≤k|X|\leq k такого, что |⋃Xi∈XXi|≥t​m\left|\bigcup_{X_{i}\in X}X_{i}\right|\geq tm. Этот экземпляр имеет решение размера не более kk тогда и только тогда, когда исходный экземпляр Set Cover имеет покрытие множествами размера не более k′k^{\prime}. Если исходный экземпляр Set Cover допускает решение размера не более k′k^{\prime}, то это решение также является решением соответствующего экземпляра Partial Set Cover.

С другой стороны, предположим, что построенный экземпляр Partial Set Cover имеет решение размером не более kk, которое покрывает по меньшей мере t​mtm элементов. Поскольку ⌈mt⌉−m\lceil\frac{m}{t}\rceil-m добавленных подмножеств покрывают ровно по одному элементу каждое, они не могут вносить вклад в решение размером не более kk, которое покрывает по меньшей мере t​mtm элементов. Следовательно, любое такое решение должно состоять исключительно из подмножеств из ℱ′\mathcal{F}^{\prime} и, следовательно, соответствует покрытию множества размером не более k′k^{\prime} в исходном экземпляре Set Cover. ∎

Corollary 1.

Максимальное избыточное множество является NP-сложным.

Доказательство.

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

4.2 Ограничения MCS и MRS

Оба метода (MCS и MRS) игнорируют внутреннюю структуру проекта, рассматривая участников исключительно с точки зрения покрытия задач. Это мешает им учитывать роль интеграторов [22], которые с топологической точки зрения соответствуют узлам-якорям в двудольных графах (и гиперграфах), то есть узлам, удаление которых приводит к фрагментации сети [28].

Аналогичным образом, MCS и MRS предполагают, что задача может быть выполнена до тех пор, пока есть хотя бы один человек, способный ее закрыть. С точки зрения управления рисками и проектами, это нереалистичное упрощение подразумевает, что можно увеличить bus-factor проекта, просто добавив синглтоны (то есть людей, связанных только с одной задачей) для каждой задачи, что в реальных проектах встречается крайне редко [18].

На самом деле можно убедиться, что обе метрики присваивают высокий bus-factor проекту, представленному графом из несвязных диад (то есть один человек, связанный с одной задачей). Мы экспериментально продемонстрируем этот недостаток в разделе 7. Кроме того, обе метрики опираются на произвольный порог tt (обычно устанавливаемый на уровне 0.5) для определения условия остановки проекта; следовательно, значение bus-factor проекта зависит от tt. Наконец, MCS и MRS не нормализованы, что делает их зависимыми от размера проекта и затрудняет содержательное сравнение между проектами..

Следовательно, в следующем разделе, опираясь на нашу предыдущую работу [24], мы представляем новое определение bus-factor, которое преодолевает вышеупомянутые недостатки.

4.3 Более точная метрика: фактор автобуса как показатель устойчивости сети

Мы основываем нашу метрику на максимальном числе связанных задач, то есть наибольшем числе задач, содержащихся в одной компоненте связности. Как уже иллюстрируется на рис. 1, использование максимального числа связанных задач позволяет нам учесть роль интеграторов, поскольку оно отражает как охват задач, так и связность. Кроме того, вычисляя площадь под кривой затухания максимального числа связанных задач по мере постепенного удаления людей, мы устраняем необходимость определения явных условий остановки и, тем самым, избавляемся от зависимости от произвольных пороговых значений (Раздел 4.2). Наконец, нормируя эту площадь на теоретический максимум, полученный для полностью связного двудольного графа с тем же количеством участников и задач, мы получаем метрику, которую можно интерпретировать двумя способами: (1) как относительную робастность проекта по отношению к максимально возможной и (2) как ожидаемое число людей, удаление которых поставит проект под угрозу, получаемое путем умножения нормированного bus-factor на общее число участников в проекте.

Перед тем как формально определить нашу меру, мы вводим понятие бэкбон множества.

Definition 1 (Опорное множество).

Для проекта, представленного в виде двудольного графа G=(P,T,E)G=(P,T,E), множество S⊆PS\subseteq P является опорным множеством, если индуцированный двудольный подграф G⁡[P∖S]G[P\setminus S] состоит из совокупности несвязных звезд, каждая из которых центрирована на одном человеке (то есть вершине в PP⟧).

Интуитивно понятная опорная структура содержит интеграторов проекта. Чем меньше опорная структура, тем меньше фактор автобуса проекта и, следовательно, тем уязвимее проект. Тем не менее, нас интересует не только мощность опорной структуры проекта; скорее, мы сосредоточены на максимальном количестве связанных задач по мере того, как люди из опорной структуры последовательно удаляются из проекта. Обратите внимание, что (1) набор несвязанных звезд представляет собой именно ту конфигурацию, для которой MCS и MRS терпят неудачу, и (2) как только GG сведен к совокупности несвязанных звезд, максимальный ущерб проекту наносится удалением людей в порядке убывания их степени.

Пусть π=(p1,p2,…,pk)\pi=(p_{1},p_{2},\dots,p_{k}) — это порядок удаления такой, что множество S={p∣p∈π}S=\{p\mid p\in\pi\} является базовым множеством размера kk. Пусть Giπ=G⁡[P∖{p1,p2,…,pi}]G^{\pi}_{i}=G[P\setminus\{p_{1},p_{2},\dots,p_{i}\}], при G0π=GG^{\pi}_{0}=G, и пусть τ⁡(G)\tau(G) обозначает максимальное число связанных задач в GG. Мы измеряем площадь под кривой затухания τ⁡(Giπ)\tau(G^{\pi}_{i}) для i=1,…,ki=1,\dots,k как

R⁡(G,π)=∑i=1kτ⁡(Giπ).R(G,\pi)=\sum_{i=1}^{k}\tau\left(G^{\pi}_{i}\right). (4)

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

ℛ⁡(G)=minπ⁡R⁡(G,π).\mathcal{R}(G)=\min_{\pi}R(G,\pi). (5)

Теперь мы покажем, что вычисление робастности двудольной сети, как определено в ур. 5, является NP-сложным.

Theorem 3.

Устойчивость двудольных сетей является NP-сложной.

Доказательство.

Мы доказываем, что разрешимая версия задачи о робастности двудольных сетей является NP-полной. Экземпляр задачи о робастности двудольных сетей состоит из двудольного графа G=(P,T,E)G=(P,T,E) и двух положительных целых чисел kk и QQ и требует определить, существует ли такая последовательность удаления kk, которая также является опорным множеством длины не более π\pi, что R⁡(G,π)≤QR(G,\pi)\leq Q⟧.

Во-первых, отметим, что задача устойчивости двудольных сетей принадлежит классу NP, поскольку проверка потенциального решения π\pi требует вычисления R⁡(G,π)R(G,\pi), что может быть выполнено за полиномиальное время. В разделе 5.3 мы фактически представим алгоритм с линейным временем выполнения для вычисления R⁡(G,π)R(G,\pi).

Мы доказываем, что устойчивость двудольных сетей является NP-трудной задачей путем сведения к ней задачи о вершинном покрытии. Учитывая экземпляр задачи о вершинном покрытии на графе G′=(V′,E′)G^{\prime}=(V^{\prime},E^{\prime}) с параметром k′k^{\prime}, мы строим экземпляр устойчивости двудольных сетей следующим образом. Мы преобразуем G′G^{\prime} в двудольный граф G=(P,T,E)G=(P,T,E), где P=V′P=V^{\prime}, T=E′T=E^{\prime} и E={(a,b)∣a∈P,b∈T,and a is an endpoint of b}E=\{(a,b)\mid a\in P,\ b\in T,\ \text{and }a\text{ is an endpoint of }b\} (та же трансформация, что используется для MCS, на рис. 2A). Мы устанавливаем k=k′k=k^{\prime} и Q=k​|T|Q=k|T|⟧.

Если G′G^{\prime} имеет вершинное покрытие SS размера не более k′k^{\prime}, то удаление вершин из SS в G′G^{\prime} дает граф, состоящий только из изолированных вершин. Поскольку наша конструкция сохраняет структуру инцидентности, удаление соответствующих вершин из PP в GG приводит к графу, состоящему из несвязных звезд, каждая из которых сосредоточена на вершине в P∖SP\setminus S и соединена с количеством вершин в TT, равным ее степени в G′G^{\prime}. Таким образом, GG допускает базовое множество (backbone set) размером не более kk.

И наоборот, предположим, что GG допускает базовое множество π\pi размером не более kk, такое что R⁡(G,π)≤QR(G,\pi)\leq Q. Худший сценарий для базового множества размера kk возникает, когда участники удаляются таким образом, что максимальное число связанных задач никогда не уменьшается в процессе удаления. В этом случае τ⁡(Giπ)=|T|\tau(G^{\pi}_{i})=|T| для всех i=1,…,ki=1,\dots,k и, следовательно, R⁡(G,π)=k​|T|=QR(G,\pi)=k|T|=Q. Это означает, что удаление вершин в π\pi должно удалять все ребра в G′G^{\prime}, и, следовательно, соответствующие вершины образуют вершинное покрытие размером не более k′k^{\prime} в G′G^{\prime}.

Следовательно, GG допускает базовое множество π\pi размером не более kk такое, что R⁡(G,π)≤QR(G,\pi)\leq Q тогда и только тогда, когда G′G^{\prime} имеет вершинное покрытие размером не более k′k^{\prime}, и таким образом Vertex Cover ≤p\leq_{\mathrm{p}} Bipartite Network Robustness. ∎

Наша мера надежности ℛ⁡(G)\mathcal{R}(G) обобщает широко используемую меру надежности сети для неориентированных графов, предложенную Шнайдером и др. [26]. Чжао и др. [32] отметили, что установление вычислительной сложности меры надежности, предложенной Шнайдером и др., все еще остается открытой проблемой. Теорема 3 разрешает эту открытую проблему.

Меры в ур. 4 концептуально связаны с понятием естественной связности двудольного графа [27], спектральной мерой, которая отражает избыточность альтернативных путей в сети. Естественная связность является более подходящей мерой надежности, когда необходимо учитывать потоки и длину путей. Однако в случае bus-factor мы не имеем дело с потоками в сети; поэтому измерение максимального числа связанных задач является более подходящим. Кроме того, вычисление естественной связности обходится дороже, чем вычисление максимального числа связанных задач, поскольку оно зависит от всех собственных значений матрицы смежности GG.

Наконец, мы вводим нашу нормированную мера фактора автобуса как отношение между робастностью двудольного графа GG, вычисленной с последовательностью удаления π∈Π⁡(P)\pi\in\Pi(P) (где Π⁡(P)\Pi(P) обозначает множество всех возможных перестановок людей в PP), и робастностью полносвязного двудольного графа того же размера:

ℬ⁡(G,π)=2m⁡(2​n−1)​∑i=1n[τ⁡(Gi−1π)+τ⁡(Giπ)],with ​G0π=G.\mathcal{B}(G,\pi)=\frac{2}{m(2n-1)}\sum_{i=1}^{n}\left[\tau\left(G^{\pi}_{i-1}\right)+\tau\left(G^{\pi}_{i}\right)\right],\quad\text{with }G^{\pi}_{0}=G. (6)

Обратите внимание, что в Ур. 6 мы используем формулировку, немного отличающуюся от формулировки сетевой устойчивости в Ур. 4. Это просто два разных способа оценки площади под кривой: Ур. 4 соответствует сумме Гаусса, в то время как Ур. 6 применяет метод трапеций, который обеспечивает более точную оценку площади под кривой. Нормализованный bus-factor ℬ⁡(G,π)\mathcal{B}(G,\pi) принимает значения в [0,1][0,1] и может интерпретироваться как доля устойчивости проекта относительно теоретического максимума, что позволяет проводить сравнения между проектами. Например, bus-factor, равный ℬ⁡(G,π)=0.5\mathcal{B}(G,\pi)=0.5, указывает на то, что GG вдвое менее устойчив, чем полностью связанный граф того же размера.

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

5 Практика аппроксимации bus-фактора

В этом разделе мы представляем аппроксимационные алгоритмы для всех формулировок bus-factor, проанализированных в предыдущем разделе, рассматривая как качество аппроксимации, так и масштабируемость. Для MCS и Robustness мы параметризуем наши алгоритмы с помощью порядка удаления π\pi, так что качество аппроксимации зависит исключительно от π\pi. Такая конструкция позволяет применять одни и те же алгоритмы с альтернативными порядками удаления, если они приводят к улучшению аппроксимаций..

5.1 Аппроксимация Максимальное избыточное множество

В разделе 4.1 мы показали, что избыточное множество является дополнением частичного покрытия множества; следовательно, любой приближенный алгоритм для задачи минимального частичного покрытия множества дает приближенный алгоритм для задачи поиска максимального избыточного множества. Наилучший возможный полиномиально-сложностной приближенный алгоритм для задачи покрытия множества, если только P==NP, гарантирует решение, которое превосходит оптимальное решение [9] не более чем в O⁡(log⁡m)O(\log m) раз. Тот же алгоритм с такими же гарантиями производительности может быть использован для приближенного решения задачи частичного покрытия множества, поскольку обе задачи могут рассматриваться как частные случаи субодиномического покрытия множества [29].

Напомним, что MRS принимает на вход граф G=(P,T,E)G=(P,T,E) и вещественное число 0<t≤10<t\leq 1 и возвращает наибольшее множество людей, которые покрывают менее t​mtm задач. Концептуально наш приближенный алгоритм работает следующим образом: на каждой итерации человек, покрывающий наибольшее количество в настоящее время непокрытых задач, добавляется в множество SS до тех пор, пока не будет покрыто более t​mtm задач. Поскольку SS является приближенным решением задачи минимального частичного покрытия множества, множество X=P∖SX=P\setminus S представляет собой приближенное решение для MRS. Применяя метод, предложенный Lim и др. [19], мы представляем приближенный алгоритм для MRS за почти линейное время, который масштабируется до очень больших двудольных графов (Алгоритм 1⟧).

1: функция Максимально-избыточное-множество(G,tG,\;t)
2:   𝒬←MaxPriorityQueue⁡()\mathcal{Q}\leftarrow\mathrm{MaxPriorityQueue()} ⊳\triangleright Очередь с приоритетами, упорядочивающая людей по охвату задач
3:   covered←BitArray⁡(m)\texttt{covered}\leftarrow\mathrm{BitArray}(m) ⊳\triangleright Битовый массив, указывающий на покрытые задачи; изначально все биты не установлены
4:   S=∅S=\emptyset ⊳\triangleright Сохраняет частичное покрытие множества
5:   для всех p∈G.people⁡()p\in G\mathrm{.people()} делать
6:    ℐ⁡[p]←G.neighbors⁡(p)\mathcal{I}[p]\leftarrow G\mathrm{.neighbors}(p) ⊳\triangleright Массив, отслеживающий задачи, которые в настоящее время выполняются каждым человеком
7:    𝒬⁡[p]←G.degree⁡(p)\mathcal{Q}[p]\leftarrow G\mathrm{.degree}(p)
8:   конец для
9:   пока covered.count​()<t​m\texttt{covered}.\text{count}()<tm делать
10:    p,priority←𝒬.pop⁡()p,\;\texttt{priority}\leftarrow\mathcal{Q}\mathrm{.pop()}
11:    s←ℐ⁡[p]s\leftarrow\mathcal{I}[p]
12:    effective_coverage←s∖covered\texttt{effective\_coverage}\leftarrow s\setminus\texttt{covered}
13:    если |effective_coverage|=priority|\texttt{effective\_coverage}|=\texttt{priority} затем ⊳\triangleright Если покрытие ⟦K0⟧ pp актуально, добавить pp для SS
14:      S←S∪{p}S\leftarrow S\cup\{p\}
15:      covered.union⁡(effective_coverage)\texttt{covered}\mathrm{.union}(\texttt{effective\_coverage})
16:    иначе⊳\triangleright В противном случае обновите покрытие pp и повторно вставить pp в 𝒬\mathcal{Q}
17:      ℐ⁡[p]←effective_coverage\mathcal{I}[p]\leftarrow\texttt{effective\_coverage}
18:      𝒬.push⁡(p,|effective_coverage|)\mathcal{Q}\mathrm{.push}(p,|\texttt{effective\_coverage}|)
19:    конец если
20:   конец в то время как
21:   return n−|S|,P∖Sn-|S|,\;P\setminus S ⊳\triangleright MRS является дополнением частичного покрытия множества
22: конец функция
⟦Algorithm 1 Аппроксимационный алгоритм для задачи о максимальном избыточном множестве (MRS)

В нашем алгоритме мы используем очередь с приоритетами 𝒬\mathcal{Q} для планирования человека с наибольшим покрытием задач, а набор покрытых задач и множество SS мы представляем в виде битовых массивов (алгоритм 1, строки 2–4). Для каждого человека мы отслеживаем непокрытые задачи в непрерывном массиве сегментов ℐ\mathcal{I} и приоритизируем людей по их степени (строки 5–8). На каждой итерации мы извлекаем человека pp из 𝒬\mathcal{Q} и проверяем, равен ли их приоритет текущему количеству непокрытых задач, effective_coverage (строки 9–13). Если это так, мы добавляем pp в частичное покрытие множества SS и обновляем набор покрытых задач (строки 13–16); в противном случае мы возвращаем pp обратно в очередь с обновленным приоритетом и покрытием задач (строки 16–19). Когда количество покрытых задач достигает как минимум t​mtm, цикл завершается, и алгоритм возвращает множество P∖SP\setminus S вместе с его мощностью в качестве решения MRS (строки 20–22).).

Алгоритм 1 представляет собой O⁡(n)O(n)-приближение для MRS. Следующая теорема показывает, что это отношение приближения является наилучшим достижимым с помощью полиномиального алгоритма, если только P=NP\mathrm{P}=\mathrm{NP}.

Theorem 4.

Если не P=NP\mathrm{P}=\mathrm{NP}, то задача аппроксимации максимального избыточного множества с коэффициентом O⁡(n1−ϵ)O(n^{1-\epsilon}) является NP-трудной для любой константы ϵ>0\epsilon>0, где nn — количество людей..

Доказательство (эскиз).

Задача о максимальном независимом множестве является дополнением задачи о минимальном вершинном покрытии [12]. Используя то же преобразование, которое ранее применялось для доказательства сложности MCS и устойчивости сети, мы можем преобразовать неориентированный недвудольный граф G′G^{\prime} в эквивалентный двудольный граф GG. Вычисление минимального покрытия множества на GG эквивалентно вычислению минимального вершинного покрытия на G′G^{\prime} [12]; следовательно, вычисление MRS на GG (с t=1t=1) эквивалентно вычислению максимального независимого множества на G′G^{\prime}. Однако, если не P=NP\mathrm{P}=\mathrm{NP}, задача о максимальном независимом множестве является NP-трудной для аппроксимации с коэффициентом O⁡(n1−ϵ)O(n^{1-\epsilon}) для любой константы ϵ>0\epsilon>0 [33]. Поскольку MRS содержит задачу о максимальном независимом множестве в качестве частного случая, этот результат о сложности переносится на MRS.. ∎

5.2 Приближение Минимальное критическое множество

Для аппроксимации минимального критического множества мы предлагаем подход на основе перколяции узлов, при котором люди постепенно удаляются из графа в соответствии с порядком удаления π\pi. Мы инициализируем массив, содержащий количество людей, покрывающих каждую задачу, то есть их степень (Алгоритм 2, строки 2–4). По мере удаления людей из GG мы уменьшаем степень задач, с которыми они связаны (строки 6–9), обновляем счетчик изолированных задач, когда задача 𝔱\mathfrak{t} становится изолированной (строки 10–12), и отслеживаем количество удаленных людей (строки 13–14). Когда количество изолированных задач превышает t​mtm (при этом tt обычно устанавливается равным 0.50.5 [5]), алгоритм завершается, возвращая мощность MCS (строки 15–17).

1: функция Min-Critical-Set(G,t,πG,\;t,\;\pi)
2:   для всех 𝔱∈G.tasks⁡()\mathfrak{t}\in G\mathrm{.tasks()} делать
3:    task_degs​[𝔱]←G.degree​(𝔱)\texttt{task\_degs}[\mathfrak{t}]\leftarrow G\mathrm{.degree}(\mathfrak{t}) ⊳\triangleright Отслеживает степени задач по мере удаления людей из GG
4:   конец для
5:   mcs​_​size,num​_​isolated←0\mathrm{mcs\_size,num\_isolated}\leftarrow 0 ⊳\triangleright Размер MCS и количество изолированных задач
6:   в то время как num​_​isolated≤t​m\mathrm{num\_isolated}\leq tm делать
7:    p←π.next⁡()p\leftarrow\pi\mathrm{.next()}
8:    для всех 𝔱∈G.neighbors⁡(p)\mathfrak{t}\in G\mathrm{.neighbors}(p) делать
9:      task_degs​[𝔱]←task_degs​[𝔱]−1\texttt{task\_degs}[\mathfrak{t}]\leftarrow\texttt{task\_degs}[\mathfrak{t}]-1 ⊳\triangleright Снижает охват задач, покрываемых ⟦K0⟧ pp
10:      если task_degs[𝔱\mathfrak{t}] = 0 затем
11:       num​_​isolated←num​_​isolated+1\mathrm{num\_isolated}\leftarrow\mathrm{num\_isolated}+1 ⊳\triangleright Увеличивает количество изолированных задач
12:      конец если
13:    конец для
14:    mcs​_​size←mcs​_​size+1\mathrm{mcs\_size}\leftarrow\mathrm{mcs\_size}+1 ⊳\triangleright Увеличивает количество удаленных на данный момент людей (текущий размер MCS)
15:   конец в то время как
16:   вернуть mcs​_​size\mathrm{mcs\_size}
17: конец функция
⟦Algorithm 2 Фактор автобуса как минимальное критическое множество

Алгоритм 2 масштабируется линейно по количеству ребер, поскольку ему приходится обрабатывать каждого человека и связанные с ним задачи не более одного раза, что приводит к вычислительной сложности O⁡(|E|)O(|E|). Поскольку алгоритм 2 в качестве входных данных ожидает порядок удаления π\pi, естественным является вопрос о том, как выбрать π\pi. Разумным выбором является удаление людей в порядке убывания степени (как это сделали Авелино и др. [5]), что, как правило, хорошо работает на практике. Фактически, реальные сети являются разреженными и демонстрируют распределения степеней с тяжелыми хвостами: относительно немногие узлы имеют высокую степень, в то время как подавляющее большинство имеет низкую степень [2]. Эта характеристика означает, что узлы с высокой степенью имеют первостепенное значение для связности сети. Например, Шан показал, что в двудольных графах удаление относительно небольшой доли узлов с высокой степенью существенно снижает естественную связность сети [27].

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

Theorem 5.

Алгоритм 2, когда порядок удаления π\pi определяется в порядке убывания степени, является O⁡(n)O(n)-аппроксимацией для задачи поиска минимального критического множества..

Доказательство.

Мы приводим конструктивное доказательство этой теоремы путем построения примера, для которого алгоритм 2 имеет коэффициент аппроксимации O⁡(n)O(n). Пусть 0<t<10<t<1, n,m∈ℕ+n,m\in\mathbb{N}^{+}, такие что n>t​m+1n>tm+1. Мы создаем граф G=(P,T,E)G=(P,T,E) следующим образом: множество PP содержит nn узлов, множество TT содержит mm узлов. Мы разбиваем множество TT на два подмножества T1T_{1} и T2T_{2} так, что |T1|=t​m+1|T_{1}|=tm+1 и |T2|=(1−t)​m−1|T_{2}|=(1-t)m-1, при T1∪T2=TT_{1}\cup T_{2}=T и T1∩T2=∅T_{1}\cap T_{2}=\emptyset. Аналогично, мы разбиваем PP на два подмножества P1P_{1} и P2P_{2} так, что |P1|=t​m+1|P_{1}|=tm+1 и |P2|=n−(t​m+1)|P_{2}|=n-(tm+1), при P1∪P2=PP_{1}\cup P_{2}=P и P1∩P2=∅P_{1}\cap P_{2}=\emptyset. Теперь мы определяем множество ребер EE. Каждый человек в P1P_{1} связан ровно с одной задачей в T1T_{1}, образуя t​m+1tm+1 несвязных диад. Кроме того, мы строим полносвязный двудольный граф между людьми в P2P_{2} и задачами в T2T_{2}. Пусть OO обозначает оптимальное критическое множество, а XX обозначает критическое множество, возвращаемое алгоритмом 2, когда π\pi удаляет людей в порядке убывания степени. Оптимальное решение равно O=P1O=P_{1}. Однако аппроксимационный алгоритм удаляет людей в P2P_{2} первыми, поскольку они имеют более высокую (или равную) степень, чем те, что в P1P_{1}. Следовательно, |X|≥|P2||X|\geq|P_{2}|. По мере того как tt стремится к нулю, |P1||P_{1}| стремится к единице, в то время как |P2||P_{2}| стремится к n−1n-1. Таким образом, |X|=Ω⁡(n)​|O||X|=\Omega(n)\,|O|, что подразумевает коэффициент аппроксимации O⁡(n)O(n)⟧. ∎

Иными словами, в худшем случае порядок удаления по степени людей может дать минимальный критический набор размером до n−1n-1 человек, в то время как оптимальное значение составляет всего 11⟧.

5.3 Приближенное вычисление коэффициента автобуса как Устойчивость двудольных сетей

Вычисление надежности требует, при удалении людей из GG, итерации по всем связанным компонентам в GG, подсчета содержащихся в них задач и выбора максимума среди них. Наивная реализация этого процесса, основанная на nn повторяющихся применениях поиска в глубину (DFS), привела бы к алгоритму, масштабируемому квадратично по количеству людей, с вычислительной сложностью O⁡(n2​m)O(n^{2}m).

Здесь мы предлагаем эффективную реализацию этого процесса путем отслеживания максимального количества связанных задач с использованием структуры данных Union–Find: структуры непересекающихся множеств, в которой каждое множество представлено в виде дерева, а корень дерева является репрезентативным элементом множества. Когда два множества объединяются, корни соответствующих деревьев соединяются [9]. Если вместо удаления людей мы добавляем их в обратном порядке удаления, эта структура данных позволяет отслеживать максимальное количество связанных задач по мере роста компонентов. Эта идея приводит к следующему алгоритму за линейное время22 2 Тот же алгоритм может быть использован для вычисления надежности любой произвольной сети., с вычислительной сложностью O⁡(|E|)O(|E|).

1: функция Фактор автобуса(G,πG,\;\pi)
2:   𝒰←UnionFind(G.num_tasks())\mathcal{U}\leftarrow\text{UnionFind}(G\mathrm{.num\_tasks()}) ⊳\triangleright Структура Union–Find для mm задачи
3:   tau←[0]\texttt{tau}\leftarrow[0] ⊳\triangleright Вектор, хранящий значения τ⁡(Giπ)\tau\left(G_{i}^{\pi}\right)
4:   для всех p∈π.reverse⁡()p\in\pi\mathrm{.reverse()} do
5:    neigs←G.neighbors⁡(p)∪{p}\texttt{neigs}\leftarrow G\mathrm{.neighbors}(p)\cup\{p\} ⊳\triangleright Получает задачи, к которым pp является связанным
6:    𝒰.union⁡(neigs)\mathcal{U}\mathrm{.union}(\texttt{neigs}) ⊳\triangleright Объединяет эти задачи в единый компонент в 𝒰\mathcal{U}
7:    tau.push(𝒰.max_num_connected_tasks())\texttt{tau}\mathrm{.push}\!\left(\mathcal{U}\mathrm{.max\_num\_connected\_tasks}()\right) ⊳\triangleright Вычисляет максимальное количество связанных задач τ⁡(Giπ)\tau\left(G_{i}^{\pi}\right)
8:   конец для
9:   ℬ←2m⁡(2​n−1)​∑i=1n(tau​[i−1]+tau​[i])\mathcal{B}\leftarrow\frac{2}{m(2n-1)}\sum_{i=1}^{n}\left(\texttt{tau}[i-1]+\texttt{tau}[i]\right) ⊳\triangleright Вычисляет устойчивость согласно Eq. 6
10:   вернуть ℬ\mathcal{B}
11: конец функция
⟦Algorithm 3 Фактор автобуса как надежность сети

Алгоритм 3 принимает на вход граф GG и последовательность удаления π\pi. Мы инициализируем структуру данных Union–Find 𝒰\mathcal{U} с mm непересекающимися задачами (строка 2) и обрабатываем последовательность удаления π\pi в обратном порядке, от последнего удаляемого человека к первому (строка 4). Каждый раз, когда мы обрабатываем человека pp, мы объединяем компоненты, соответствующие задачам, с которыми связан pp (строки 5–6), и сохраняем в векторе tau максимальное количество связанных задач в 𝒰\mathcal{U} (строка 7). Наконец, bus-factor ℬ\mathcal{B} вычисляется путем применения уравнения 6 к вектору tau.

Удаление людей по степени снова предлагает хорошее приближение надежности двудольных сетей на практике. Пикколо и др. эмпирически продемонстрировали эффективность удаления на основе степени при изучении надежности реального проекта, связанного со строительством электростанции на биомассе [22]. Шанг [27], напротив, подтвердил с помощью симуляций предсказания теории протекания на двудольных сетях относительно удаления узлов высокой степени и впоследствии расширил теорию, введя концепцию якорных узлов [28], которые тесно связаны с нашим понятием интеграторов.

Хотя удаление по степени хорошо работает на практике, мы докажем, что в худшем случае оно дает O⁡(n)O(n)-аппроксимацию надежности сети.

Theorem 6.

Последовательность удаления π\pi, определенная в порядке убывания степени, является O⁡(n)O(n)-аппроксимацией для задачи робкости двудольных сетей.

Доказательство.

Подобно тому, как мы сделали в Теореме 5, мы строим граф, для которого удаление по степени достигает коэффициента аппроксимации O⁡(n)O(n). Пусть k∈ℕk\in\mathbb{N}, с k≥2k\geq 2.

Мы строим граф следующим образом. Мы создаем kk звезд, каждая из которых состоит из одного человека и k+1k+1 задач. Затем мы добавляем еще одного человека и соединяем его с одной задачей из каждой из kk звезд, введенных ранее. Теперь мы получаем дерево с корнем в центральном человеке, соединенном с kk задачами, и kk периферийными людьми, каждый из которых соединен с k+1k+1 задачами. Это дерево состоит из n=k+1n=k+1 людей и m=k⁡(k+1)m=k(k+1) задач.

Оптимальная последовательность удаления для этого дерева удаляет центрального человека первым (степень kk), за которым следуют периферийные люди (степень k+1k+1). Удаление центрального человека сводит сеть к k+1k+1 звездам, каждая из которых имеет k+1k+1 задач. Каждое последующее удаление изолирует k+1k+1 задач, пока последний человек не будет удален, в результате чего граф состоит из mm несвязанных задач. Общая стоимость в соответствии с Ур. 4 для этой последовательности составляет R⁡(G,π∗)R(G,\pi^{*}) = k⁡(k+1)=k2+kk(k+1)=k^{2}+k.

Алгоритм 3, в котором π\pi упорядочены по убыванию степени, вместо этого начинает с удаления людей со степенью k+1k+1, изолируя kk задач после каждого удаления. После kk шагов сеть сводится к центральному человеку, соединенному с kk задачами. После удаления последнего человека сеть превращается в совокупность изолированных задач без людей, и поэтому количество задач в наибольшей связанной компоненте становится равным нулю. Стоимость этой процедуры составляет R⁡(G,π)=(m−k)+(m−2​k)+⋯+(m−k2)=k​m−k​S​(k)R(G,\pi)=(m-k)+(m-2k)+\dots+(m-k^{2})=km-kS(k), где S⁡(k)=k⁡(k+1)/2=(k2+k)/2S(k)=k(k+1)/2=(k^{2}+k)/2. Следовательно, R⁡(G,π)=k⁡(k⁡(k+1))−k⁡((k2+k)/2)=k3+k2−(k3+k2)/2=(k3+k2)/2R(G,\pi)=k(k(k+1))-k((k^{2}+k)/2)=k^{3}+k^{2}-(k^{3}+k^{2})/2=(k^{3}+k^{2})/2.

Таким образом, коэффициент аппроксимации составляет:

R⁡(G,π)R⁡(G,π∗)=k3+k22​(k2+k)=k2​(k+1)2​k​(k+1)=k2=n−12=O⁡(n)\frac{R(G,\pi)}{R(G,\pi^{*})}=\frac{k^{3}+k^{2}}{2(k^{2}+k)}=\frac{k^{2}(k+1)}{2k(k+1)}=\frac{k}{2}=\frac{n-1}{2}=O(n)

∎

Мы отмечаем, что Теорема 6 устанавливает O⁡(n)O(n) худшую оценку приближения не только для фактора автобуса, но и для устойчивости сети в целом (включая недвудольные графы).

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

6 Оценка алгоритмической производительности

Мы реализуем как наши алгоритмы, так и показатели bus-factor на языке Python и выполняем все эксперименты на ноутбуке с процессором 2,9 ГГц и 32 ГБ оперативной памяти. Мы оцениваем время выполнения наших алгоритмов на случайных двудольных сетях с размерами множеств узлов от 1 0001\,000 до 1 000 0001\,000\,000 узлов каждое, при общем числе ребер от 400 000400\,000 до примерно 500 000 000500\,000\,000. Хотя случайные сети не являются хорошими моделями реальных проектных сетей [22], они хорошо подходят для измерения времени выполнения, поскольку в них отсутствует используемая структура. Мы устанавливаем порог t=0.9¯t=0.\overline{9} как для Maximum Redundant Set (далее MRS), так и для Minimum Critical Set (далее MCS), чтобы заставить алгоритмы обработать всю сеть. Мы обнаруживаем, что наши алгоритмы масштабируются линейно с ростом числа ребер и остаются эффективными даже на массивных сетях, обрабатывая полмиллиарда ребер менее чем за 20 секунд (рис. 3A).

Затем, чтобы оценить качество приближений за пределами анализа худшего случая, мы сравниваем наши реализации с альтернативными порядками обработки и удаления. Мы используем случайный порядок в качестве базового, так как разумный алгоритм приближения должен превосходить случайное решение. В дополнение к случайному базовому решению мы проводим сравнение с порядками удаления, индуцированными центральностью по посредничеству и собственному вектору — двумя сильными базовыми подходами, которые широко используются в исследованиях надежности сетей [4]. Мы оцениваем относительный размер решений для MRS и MCS: для MRS лучшие результаты соответствуют большим решениям, в то время как для MCS предпочтительны меньшие решения. Для показателя Robustness вместо этого мы оцениваем площадь под кривой ℬ⁡(G,π)\mathcal{B}(G,\pi), полученной путем определения π\pi в соответствии с каждой стратегией удаления: меньшие площади соответствуют лучшим решениям.

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

f⁡(x,α,a,c)=αc​(x−ac)α−1,with support ​[a,a+c].f(x,\alpha,a,c)=\frac{\alpha}{c}\left(\frac{x-a}{c}\right)^{\alpha-1},\quad\text{with support }[a,a+c]. (7)

Мы генерируем сети с 7 5007\,500 участниками и 10 00010\,000 задачами. Степени вершин участников генерируются на основе Ур. 7 с параметрами α=0.2,a=1,c=100\alpha=0.2,\;a=1,\;c=100, в то время как степени вершин задач генерируются с параметрами α=0.2,a=1,c=70\alpha=0.2,\;a=1,\;c=70⟧.

Refer to caption
⟦Figure 3: Анализ алгоритмической производительности. А) Сравнение времени выполнения. Б) Чувствительность MRS к пороговому значению tt. В) Чувствительность MCS к пороговому значению tt. Г) Средний относительный размер MRS для различных стратегий обработки. Д) Средний относительный размер MCS для различных порядков удаления (π)(\pi). Е) Средняя устойчивость ℬ⁡(G,π)\mathcal{B}(G,\pi) для различных порядков удаления (π)(\pi). MRS: Максимальное избыточное множество; MCS: Минимальное критическое множество; Устойчивость: Фактор автобуса как устойчивость двудольной сети.

Такой выбор параметров позволяет нам воспроизвести ключевые характеристики реальных проектных сетей, а именно: 1) задач, как правило, больше, чем людей; 2) распределения степеней имеют правостороннюю асимметрию; и 3) лишь небольшая часть людей (интеграторы) связана с большим количеством задач, в то время как большинство людей — это специалисты, работающие над немногими задачами. Эти характеристики наблюдались в различных типах проектов, начиная от разработки программного обеспечения [30] и заканчивая промышленным дизайном [22]. Мы подчеркиваем, что в этих конкретных параметрах нет ничего особенного; мы провели наши эксперименты с различными значениями параметров и получили качественно схожие результаты..

Поскольку MRS и MCS зависят от порогового значения tt, мы сначала изучили, как их выходные данные изменяются при изменении tt. Мы наблюдаем, что размер MRS монотонно уменьшается с увеличением tt (рис. 3B), в то время как размер MCS монотонно увеличивается с tt (рис. 3C). Для всех значений tt наша реализация стабильно превосходит все базовые методы. Такое монотонное поведение указывает на то, что качественно выбор tt существенно не влияет на наблюдаемые тенденции. Однако с количественной точки зрения, если MRS или MCS должны интерпретироваться как показатели bus-factor, выбор tt является критически важным и требует тщательного обоснования. В предыдущих работах tt обычно устанавливалось равным 0.50.5 [11]. Соответственно, для преемственности с существующей литературой мы устанавливаем t=0.5t=0.5 в наших последующих анализах MRS и MCS..

Наконец, мы оцениваем производительность наших реализаций по сравнению с базовыми методами на 1 0001\,000 двудольных степенных сетях. Для MRS (рис. 3D) наша реализация дает решения, которые примерно на 6%6\% больше, чем те, что получены с помощью случайного базового метода. Для MCS (рис. 3E) и Robustness (рис. 3F) наши реализации дают решения, которые примерно в три раза меньше, чем те, что созданы случайным базовым методом. Более того, наши реализации работают по меньшей мере не хуже стратегий на основе betweenness и eigenvector centrality, будучи при этом более быстродействующими в вычислительном отношении.

Теперь мы переходим к оценке пригодности MRS, MCS и Robustness в качестве мер bus-factor.

7 Экспериментальная оценка мер bus factor

Как можно оценить показатели bus-factor, сохраняя при этом универсальную перспективу, не зависящую от предметной области? Эмпирические оценки, подобные тем, которые провели Avelino et al. [5] и Ferreira et al. [11], проблематичны в этом отношении: они ориентированы на репозитории GitHub и учитывают лишь относительно небольшое число проектов, большинство из которых демонстрируют тривиальный bus-factor, равный единице.

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

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

Q1

Как меняется фактор автобуса при изменении плотности сети?

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

Q2

Как изменяется фактор автобуса при добавлении людей в сеть?

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

Q3

Как изменяется фактор автобуса вследствие перераспределения людей по задачам?

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

Мы рассматриваем каждый из этих вопросов в следующих разделах.

7.1 Чувствительность мер фактор-автобуса к различным распределениям рабочей нагрузки (Q1)

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

Мы ожидаем, что хорошо спроектированная мера bus factor будет положительно коррелировать с плотностью сети: чем плотнее сеть, тем надежнее проект; чем разреженнее сеть, тем менее надежным он становится. Мы выполняем этот набор симуляций, добавляя или удаляя ребра из исходной сети батчами по 100100, в общей сложности для 50 00050\,000 добавленных или удаленных ребер.

Мы обнаруживаем, что MRS в значительной степени нечувствительна к вариациям плотности сети, в то время как MCS и Robustness качественно демонстрируют ожидаемое поведение (Рис. 4). Однако этот эксперимент уже подчеркивает последствия зависимости MCS от фиксированного порога. По мере того как сеть становится более плотной, MCS насыщается раньше, чем Robustness (Рис. 4A): в течение первых добавленных ребер 25 00025\,000 MCS растет быстрее, чем Robustness, а затем выходит на плато (см. вставку на Рис. 4A). Это поведение является прямым следствием порогового параметра tt.

Refer to caption
⟦Figure 4: Чувствительность показателей автобусного фактора к изменениям плотности сети (Q1). А) Уплотнение: MCS и устойчивость возрастают с увеличением плотности сети, как и ожидалось. Врезка: значения MCS и устойчивости, выраженные в количестве людей. Б) Разрежение: MCS и устойчивость снижаются с увеличением плотности сети, как и ожидалось. Врезка: увеличенное изображение диапазона [5 000,10 000][5\,000,10\,000] удаленных ребер, показывающее, что устойчивость более стабильна, чем MCS. MRS: Максимальное избыточное множество; MCS: Минимальное критическое множество; Устойчивость: Автобусный фактор как устойчивость двудольной сети.

Аналогично, в то время как MCS и Robustness уменьшаются с сопоставимой скоростью по мере разрежения сети (рис. 4B), MCS демонстрирует заметные колебания (см. врезку на рис. 4B). Эти колебания возникают как из-за использования фиксированного порога, так и из-за того, что разрежение сети изменяет степени вершин и, как следствие, порядок удаления. Напротив, Robustness демонстрирует более стабильное поведение, поскольку оно основано на компонентах связности и максимальном числе связанных задач, а не только на покрытии задач.

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

7.2 Чувствительность показателей фактора автобуса к стратегиям, направленным на повышение резервирования персонала (Q2)

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

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

Здесь мы изучаем реакцию мер bus factor на две стратегии, направленные на увеличение избыточности:

  1. ⟦1. Добавление одиночек: мы добавляем в исходный граф по одной одиночке на каждую задачу. Одиночка — это специалист, который работает только над одной задачей. Хотя добавление одиночек увеличивает избыточность на уровне задач, оно не повышает избыточность на уровне проекта, поскольку не позволяет интегрировать удаленные модули сети.
  2. ⟦2. Добавление дубликатов: мы добавляем в исходный граф копии существующих людей (дублированные узлы), начиная с человека с наибольшей степенью и заканчивая человеком с наименьшей степенью. Люди с высокой степенью являются интеграторами, в то время как люди с низкой степенью являются специалистами. Эта стратегия увеличивает избыточность до определенного момента, а именно до тех пор, пока интеграторы не будут дублированы, после чего наблюдается снижение эффективности.

В соответствии с эмпирическими данными в области управления проектами [18] и программной инженерии [20], качественная метрика bus-factor должна быть относительно нечувствительной к добавлению одиночных элементов и корректно отражать эффект убывающей отдачи, связанный с добавлением дубликатов.

Refer to caption
⟦Figure 5: Чувствительность показателей bus-factor к стратегиям, направленным на увеличение кадровой избыточности (Q2). A) Чувствительность к синглтонам (т.е. людям, работающим только над одной задачей). MCS и MRS увеличиваются по мере добавления синглтонов в сеть и не имеют верхней границы. Такое поведение нежелательно для показателя bus-factor. Robustness, напротив, корректно отражает эффект убывающей отдачи от добавления синглтонов и снижается по мере их включения в сеть. На врезке: значения MCS и Robustness, выраженные в количестве людей. В то время как нормализованный Robustness снижается, отражая убывающую отдачу, количество людей, необходимое для фрагментации сети, остается неизменным, как и ожидалось. B) Чувствительность к дубликатам. MRS растет бесконечно без верхней границы. MCS растет по мере добавления дубликатов до тех пор, пока не достигнет насыщения из-за своего порогового значения. Robustness, в соответствии с ожиданиями, отражает эффект убывающей отдачи от добавления людей с прогрессивно меньшей степенью связности, демонстрируя поведение, согласующееся с эмпирическими данными о важности интеграторов. MRS: Maximum Redundant Set; MCS: Minimum Critical Set; Robustness: Bus-Factor как устойчивость двудольной сети.

Мы моделируем эти две стратегии путем добавления одиночных элементов или дубликатов группами по 100100 человек и представляем результаты на рис. 5. Мы обнаружили, что как MRS, так и MCS чрезмерно чувствительны к добавлению одиночных элементов (рис. 5A). Обе метрики растут без ограничений, что подразумевает, что bus-factor проекта можно увеличивать бесконечно, просто добавляя одиночные элементы. Этот результат резко противоречит эмпирическим данным об организационной дифференциации [18], игнорировании координации в организациях [14] и динамике итеративной работы [23], что подчеркивает существенное ограничение метрик bus-factor, основанных на MRS и MCS..

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

MRS также относительно нечувствителен к дубликатам, в то время как MCS насыщается и не отражает убывающую отдачу, связанную с добавлением дубликатов (Рис. 5B). И снова Robustness успешно отражает убывающую отдачу, обеспечиваемую людьми с постепенноdecreasing степенью, увеличиваясь более плавно, чем MCS, и в конечном итоге уменьшаясь, когда дополнительные люди больше не вносят значимый вклад в избыточность — нюанс, который MCS не способен представить.

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

7.3 Чувствительность метрик Bus-Factor к различным распределениям людей по задачам (Q3)

Перераспределение сотрудников по задачам без найма нового персонала или изменения исходного распределения рабочей нагрузки является еще одной эффективной стратегией повышения устойчивости проекта. Пикколо и др. [24], например, разработали две эвристики, которые увеличили bus-factor проекта биомассовой электростанции на 40%40\%.

Здесь мы используем хорошо зарекомендовавший себя результат из network science, который связывает network robustness с корреляцией степеней (также известной как degree assortativity) [21]. Degree correlation измеряет степень, в которой узлы с высокой (низкой) степенью склонны соединяться с другими узлами с высокой (низкой) степенью. Она определяется как коэффициент корреляции Пирсона для степеней на обоих концах ребра:

r=⟨ki​kj⟩−⟨12​(ki+kj)⟩2⟨12​(ki2+kj2)⟩−⟨12​(ki+kj)⟩2r=\frac{\langle k_{i}k_{j}\rangle-\langle\tfrac{1}{2}(k_{i}+k_{j})\rangle^{2}}{\langle\tfrac{1}{2}(k_{i}^{2}+k_{j}^{2})\rangle-\langle\tfrac{1}{2}(k_{i}+k_{j})\rangle^{2}} (8)

where kik_{i} and kjk_{j} are the degrees of nodes ii and jj if they are connected by an edge, and ⟨⋅⟩\langle\cdot\rangle denotes an average over all edges. In general, higher degree correlation is associated with greater network robustness [21], because high-degree nodes tend to connect with each other, forming dense and resilient sub-networks.

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

Достижение этого требует нетривиальной процедуры выборки. Мы выполняем выборку статистического ансамбля {G}\{G\} в соответствии с вероятностной мерой μ⁡(G)∝e−H⁡(G)\mu(G)\propto e^{-H(G)}, индуцированной гамильтонианом H(G)=−J∑(i,j)∈EkikjH(G)=-J\sum_{(i,j)\in E}k_{i}k_{j}, где JJ представляет собой параметр, управляющий корреляцией степеней выбранных сетей.

Процедура сэмплирования заключается в применении динамики Метрополиса к исходному графу GG путем многократного переподключения двух случайно выбранных ребер (u,z)(u,z) и (w,v)(w,v), что приводит к созданию новой пары ребер (которых еще нет в сети) (u,v)(u,v) и (w,z)(w,z). Для полученной сети G′G^{\prime} мы вычисляем разность энергий Δ​H=H⁡(G′)−H⁡(G)\Delta H=H(G^{\prime})-H(G) и принимаем G′G^{\prime} с вероятностью e−Δ​He^{-\Delta H}. Мы исследуем 1717 равноудаленных значений JJ на интервале [−0.002,0.002][-0.002,0.002], генерируя 100100 независимых сетей для каждого значения, что в сумме составляет 1 7001\,700 сетей.

Как показано на вставке на рис. 6A, средняя корреляция степеней для выборочных сетей монотонно возрастает с JJ. Из рис. 6A мы видим, что MRS снова в значительной степени нечувствителен к изменениям в распределении людей по задачам и даже демонстрирует поведение, противоположное ожидаемому, слегка уменьшаясь по мере увеличения корреляции степеней. И MCS, и Robustness, напротив, ведут себя в соответствии с теоретическими ожиданиями и предыдущими результатами из network science [21].

Refer to caption
⟦Figure 6: Чувствительность оценок фактора автобуса к изменениям корреляции степеней (Q3). Каждая точка представляет собой среднее значение по 100100 независимым реализациям сети, в общей сложности для 1 7001\,700 сетей. А) MRS нечувствителен к корреляции степеней, в то время как MCS и Robustness демонстрируют ожидаемое возрастающее поведение. B) Средние оценки фактора автобуса, выраженные в количестве человек, с доверительными интервалами: Robustness демонстрирует более тесную линейную зависимость с rr и меньшую дисперсию, чем MCS. MRS: Maximum Redundant Set; MCS: Minimum Critical Set; Robustness: Bus-Factor as Bipartite Network Robustness.

Мы отмечаем, однако, что MCS вносит бо́льшие искажения в отношении корреляции степеней rr по сравнению с Robustness (Рис. 6B). Кривая, создаваемая Robustness, ближе к линейной и демонстрирует меньшую общую дисперсию, чем та, что создается MCS.

8 Обсуждение

На данном этапе мы имеем достаточно полное представление о теории, лежащей в основе bus-factor и его аппроксимации, а также детальное сравнение MRS, MCS и Robustness в качестве мер bus-factor. Что наша теория означает для network science и project management? Как наши результаты трансформируются в практические рекомендации? Каковы перспективные направления для будущих исследований? Далее мы собираемся ответить на эти вопросы.

8.1 Последствия для сетевой науки и управления проектами

В данной статье мы разработали предметно-независимую теоретико-графовую структуру, которая позволяет свести задачу измерения bus-factor к комбинаторной задаче на двудольных графах. Мы определили три комбинаторные задачи, которые кодируют различные определения bus-factor: максимальное избыточное множество (MRS), минимальное критическое множество (MCS) и bus-factor как устойчивость сети (Robustness). Показав, что все три формулировки являются NP-трудными, мы продемонстрировали, что вычисление bus-factor проекта — это не просто показатель риска, актуальный для управления проектами, но и задача, имеющая важное значение для теории вычислений: если мы способны решить любую из этих трех задач за полиномиальное время, то P=NP\text{P}=\text{NP}. Более того, наше доказательство NP-трудности Robustness (Теорема 3) подразумевает NP-трудность вычисления показателя устойчивости сети ℛ\mathcal{R}, введенного Schneider et al. [26], что до сих пор оставалось открытой проблемой [32]⟧.

Наша концепция связывает сетевую науку, информатику и управление проектами. Как показывает данная статья, задачи управления проектами могут напрямую выигрывать от использования как алгоритмических, так и теоретических инструментов, разработанных в сетевой науке и теоретической информатике. Например, теория перколяции [2] дает теоретическое обоснование для удаления участников в порядке убывания степени узла, в то время как инструменты из области аппроксимационных алгоритмов позволяют нам формально рассуждать о качестве и пределах эвристических стратегий. В связи с этим наши доказательства границ аппроксимации в худшем случае (Теоремы 4, 5, 6) предоставляют, насколько нам известно, первые результаты аппроксимации для MRS, MCS, Robustness и стратегий удаления на основе степени узла. В дополнение к этому, управление проектами предлагает теории и эмпирические данные, которые мы использовали для обоснования нашего экспериментального сравнения метрик bus-factor..

Наша работа предоставляет обширную экспериментальную и теоретическую поддержку важности интеграторов как факторов, обеспечивающих робастность проекта [22], подкрепляя предыдущие выводы о программных проектах [20] и динамике итеративной разработки [23]. Эти результаты раскрывают тесную связь как с концепцией якорных узлов, так и с теорией робастности в двудольных графах и гиперграфах [28]. Более того, мы показали связь между робастностью проекта и корреляцией степеней [21], что подразумевает возможность повышения робастности проекта путем перераспределения людей по задачам. Наконец, наши масштабные тесты показали, что Robustness является единственной мерой, которая стабильно демонстрирует ожидаемое поведение, в то время как меры на основе покрытия (MRS и MCS) имеют фатальные недостатки, в частности неспособность отразить фрагментацию проекта, что делает их непригодными в качестве мер bus factor.

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

8.2 Применение наших выводов на практике

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

  1. ⟦1. Надежность в настоящее время является единственной мерой bus-factor, которая согласуется с теоретическими ожиданиями и эмпирическими данными. Кроме того, она нормализована, не опирается на пороговые значения и способна отражать фрагментацию проекта — качества, которые облегчают ее использование на практике..
  2. ⟦2. В случае, когда наем сотрудников осуществляется с целью повышения устойчивости проекта, наилучшей стратегией является наем интеграторов, которые увеличивают избыточность и связывают модули проекта, находящиеся на значительном удалении друг от друга..
  3. ⟦3. Фактор автобуса проекта может быть улучшен за счет перераспределения людей по задачам без необходимости увеличения индивидуальной рабочей нагрузки или найма новых сотрудников. Этого можно достичь с помощью специализированных алгоритмов [24] или путем увеличения корреляции степеней двудольной сети проекта, как мы показали.
  4. ⟦4. MCS не подходит в качестве меры bus factor. Тем не менее, она может быть полезной для оценки того, насколько неравномерно распределена рабочая нагрузка. Например, можно оценить меньшую группу людей, которая создала по меньшей мере 80%80\% кодовой базы, проверяя, подчиняется ли проект распределению Парето 80–20.
  5. ⟦5. MRS неинформативна в качестве меры bus-factor. Однако ее дополнение, частичное покрытие множества, может быть полезно для выявления небольшого набора экспертов в предметной области и интеграторов, которые могут стимулировать практики обмена знаниями и наставлять новых сотрудников, повышая жизнеспособность проекта. Это связывает bus-factor с проблемой поиска наиболее влиятельных узлов в сети.

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

8.3 Направления для будущих исследований

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

  1. ⟦1. Мы показали NP-трудность задач MRS, MCS и Robustness, а также доказали, что задача MRS является NP-трудной для аппроксимации с коэффициентом O⁡(n1−ϵ)O(n^{1-\epsilon}). Вопрос об аппроксимируемости задач MCS и Robustness остается открытым, и ответ на него даст нам важное понимание качества аппроксимации, которое можно ожидать от любых эвристик..
  2. ⟦2. Our measure of bus-factor is only structural and does not account for relative task importance or people skills. Complementing the structural insights provided by Robustness with other social and technical factors [23] will likely offer a more complete understanding of project robustness.
  3. ⟦3. Теория фактора автобуса может быть расширена как за счет развития ее теории протекания, так и за счет выявления того, какие сетевые метрики коррелируют с ним, помимо корреляции степеней.
  4. ⟦4. Мы показали, что удаление вершин на основе степени хорошо работает на практике, однако алгоритмы, обеспечивающие лучшие оценки, весьма вероятно, существуют. Это перспективное направление исследований, способное обеспечить как создание более эффективных алгоритмов, так и более глубокое понимание фактора автобуса..

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

9 Выводы

«Bus-factor» — это показатель устойчивости проекта к потере персонала, текучести кадров и фрагментации знаний. По своей сути вычисление «bus-factor» означает ответ на обманчиво простой вопрос: сколько людей должно покинуть проект, чтобы он остановился?

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

В этой статье мы представили теоретический подход, не зависящий от предметной области, который представляет вычисление bus factor как семейство комбинаторных задач на двудольных графах. Этот подход позволяет формализовать и объединить существующие методы в рамках двух взаимодополняющих формулировок — максимального избыточного множества (maximum redundant set, MRS) и минимального критического множества (minimum critical set, MCS) — и делает их ограничения явными. Наш анализ показывает, что, несмотря на их интуитивную привлекательность, формулировки на основе покрытия не учитывают важные аспекты устойчивости проекта и поэтому не подходят в качестве мер bus factor..

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

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

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

Благодарности

Себастьяно А. Пикколо выражает признательность Марко Манне, Симоне Перри и Альдо Ричоппо за полезные комментарии и плодотворные беседы по поводу NP-трудности и аппроксимируемости NP-трудных задач оптимизации. Данное исследование частично поддержано Министерством университетов и научных исследований (MUR) в рамках проекта PNRR PE0000013-FAIR, Spoke 9 - Green-aware AI – WP9.2 и проекта PN RIC ASVIN “Assistente Virtuale Intelligente di Negozio” (CUP B29J24000200005).).

Список литературы

  • ⟦[1] С. Агресте, С. Катанезе, П. Де Мео, Э. Феррара и Г. Фьюмара (2016) Структура сети и устойчивость мафиозных синдикатов. Information Sciences 351, стр. 30–47. Внешние ссылки: ISSN 0020-0255, Document, Link Цитируется в: §2⟧.
  • ⟦[2] Р. Альберт и А. Барабаши (2002) Статистическая механика сложных сетей. Обзоры современной физики 74 (1), стр. 47. Цитируется в: §5.2, §8.1.
  • ⟦[3] Р. Альберт, Х. Чжон и А. Барабаши (2000) Устойчивость сложных сетей к ошибкам и атакам. nature 406 (6794), стр. 378–382. Цитируется в: §2.
  • ⟦[4] О. Артайм, М. Грассия, М. Де Доменико, Дж. П. Глисон, Х. А. Максе, Г. Манджиони, М. Перк и Ф. Радиччи (2024) Надежность и устойчивость сложных сетей. Nature Reviews Physics 6 (2), стр. 114–131. Цитируется в: §6.
  • ⟦[5] Г. Авелино, Л. Пассос, А. Хора и М. Т. Валенте (2016) Новый подход к оценке коэффициентов автобуса. В материалах 24-й Международной конференции IEEE по пониманию программ (ICPC) 2016 года, Т. , стр. 1–10. Внешние ссылки: Document Цитируется в: §1, §1, §2, §4.1, §5.2, §5.2, §7.
  • ⟦[6] М. Бехрузи, С. Широлкар, Т. Барик и К. Парнин (2020) Отладка найма: что было сделано правильно и что пошло не так в процессе технического собеседования. В Трудах 42-й международной конференции ACM/IEEE по программной инженерии: Программная инженерия в обществе, ICSE-SEIS ’20, Нью-Йорк, штат Нью-Йорк, США, стр. 71–80. Внешние ссылки: ISBN 9781450371254, Link, Document Цитируется в: §7.2.
  • ⟦[7] Ф. П. Брукс-мл. (1995) Мифический человеко-месяц (юбилейное издание). Эддисон-Уэсли Лонгман Паблишинг Ко., Инк.. Цитируется в: §7.2.
  • ⟦[8] Д. С. Каллавей, С. Х. Строгац и Д. Дж. Уоттс (2000) Устойчивость и уязвимость сетей: перколяция на случайных графах. Физик ревью леттерз 85 (25), стр. 5468. Цитируется в: §2.
  • ⟦[9] Т. Х. Кормен, Ч. Э. Лейзерсон, Р. Л. Ривест и Ч. СтейнТ. М. Пресс (Ред.) (2022) Алгоритмы: введение. Цитируется в: §5.1, §5.3.
  • ⟦[10] В. Козентино, Д. Л. С. Искьердо и Д. Кабот (2015) Оценка фактора автобуса репозиториев git. В 2015 IEEE 22nd International Conference on Software Analysis, Evolution, and Reengineering (SANER), Vol. , pp. 499–503. Внешние ссылки: Document Цитируется в: §1, §2.
  • ⟦[11] М. Феррейра, М. Т. Валенте и К. Феррейра (2017) Сравнение трех алгоритмов для вычисления truck factors. В 2017 IEEE/ACM 25th International Conference on Program Comprehension (ICPC), Vol. , pp. 207–217. External Links: Document Cited by: §1, §6, §7.
  • ⟦[12] М. Р. Гарей и Д. С. Джонсон (1979) Вычислительные машины и труднорешаемые задачи. Том 174, фриман Сан-Франциско. Цтируется в: §3, §5.1.
  • ⟦[13] К. Ханнебауэр и В. Грун (2014) Алгоритмическая сложность расчета truck factor. В книге: Product-Focused Software Process Improvement: 15th International Conference, PROFES 2014, Helsinki, Finland, December 10-12, 2014. Proceedings 15, с. 119–133. Цитируется в: §2, §4.1⟧.
  • ⟦[14] К. Хит и Н. Стауденмайер (2000) Пренебрежение координацией: как обывательские теории организации усложняют координацию в организациях. Исследования в области организационного поведения 22, стр. 153–191. Цитируется в: §7.2.
  • ⟦[15] П. Холм и Я. Сарамаки (2012) Темпоральные сети. Физические отчеты 519 (3), стр. 97–125. Цитируется в: §3.
  • ⟦[16] Э. Джабраилзаде, М. Евтихьев, Э. Тюзюн и В. Коваленко (2022) Фактор автобуса на практике. В Трудах 44-й Международной конференции по программной инженерии: Программная инженерия на практике, ICSE-SEIP ’22, Нью-Йорк, штат Нью-Йорк, США, стр. 97–106. Внешние ссылки: ISBN 9781450392266, Link, Document Цитируется в: §1, §1, §2, §4, §8.2⟧.
  • ⟦[17] М. Кивеля, А. Аренас, М. Бартелеми, Д. П. Глисон, Й. Морено и М. А. Портер (2014) Многослойные сети. Журнал сложных сетей 2 (3), стр. 203–271. Цитируется в: §3.
  • ⟦[18] П. Р. Лоуренс и Дж. В. Лорш (1986) Организация и среда: управление дифференциацией и интеграцией. Издательство Гарвардской школы бизнеса. Цитируется в: §4.2, §7.2, §7.2.
  • ⟦[19] C. L. Lim, A. Moffat, and A. Wirth (2014) Lazy and eager approaches for the set cover problem. In Proceedings of the Thirty-Seventh Australasian Computer Science Conference-Volume 147, pp. 19–27. Cited by: §5.1.
  • ⟦[20] С. Маджумдер, Дж. Чакраборти, А. Агравал и Т. Мензис (2019) Почему программным проектам нужны герои (уроки, извлеченные из 1100+ проектов). Препринт arXiv: arXiv:1904.09954. Цитаты: §7.2, §8.1⟧.
  • ⟦[21] М. Е. Ньюман (2003) Паттерны смешивания в сетях. Физический обзор E 67 (2), стр. 026126. Цитируется в: item Q3, §7.3, §7.3, §7.3, §8.1⟧.
  • ⟦[22] С. А. Пикколо, С. Леманн и А. Майер (2018) Робастность процесса проектирования: анализ двудольной сети выявляет ключевую значимость людей. Design Science 4, pp. e1. Цтируется в: §1, §1, §2, §4.2, §5.3, §6, §6, §6, §7.1, §7.2, §8.1⟧.
  • ⟦[23] С. А. Пикколо, А. М. Майер, С. Леманн и К. А. МакМахон (2019) Итерации как результат социальных и технических факторов: эмпирические свидетельства крупномасштабного проектного исследования. Исследования в области инженерного проектирования 30 (2), стр. 251–270. Цитируется в: §7.2, item 2, §8.1⟧.
  • ⟦[24] С. А. Пикколо, П. Де Мео и Г. Террачина (2024) Оценка и улучшение фактора автобуса проектов: сетевой аналитический фреймворк. В 16-й Международной конференции, ASONAM 2024, Ренде, Италия, 2–5 сентября 2024 г., Труды, Часть I, LNCS. Цитируется в: §2, §4.2, §7.3, item 3⟧.
  • ⟦[25] Ф. Рикка, А. Маркетто и М. Торчиано (2011) О сложности вычисления фактора грузовика. В материалах 12-й Международной конференции по улучшению процессов разработки программного обеспечения, ориентированных на продукт, PROFES’11, Берлин, Гейдельберг, стр. 337–351. Внешние ссылки: ISBN 9783642218422 Цитируется в: §1, §2.
  • ⟦[26] C. M. Schneider, A. A. Moreira, J. S. Andrade Jr, S. Havlin, and H. J. Herrmann (2011) Mitigation of malicious attacks on networks. Proceedings of the National Academy of Sciences 108 (10), pp. 3838–3841. Cited by: §2, §4.3, §8.1⟧.
  • ⟦[27] И. Шан (2013) Измерение отказов, зависящих от степени узла, в безмасштабных сетях с двудольной структурой. Международный журнал имитационного моделирования и процессов 8 (1). Цитируется в: §2, §4.3, §5.2, §5.3.
  • ⟦[28] И. Шан (2025) Перколяция в случайных гиперграфах с якорными узлами. Physical Review E 111 (5), стр. 054304. Цитируется в: §2, §4.2, §5.3, §8.1⟧.
  • ⟦[29] Л. А. Волси (1982) Анализ жадного алгоритма для задачи о покрытии множества с субобъектной функцией. Комбинаторика 2 (4), стр. 385–393. Цитируется в: §5.1.
  • ⟦[30] К. Ямашита, С. Макинтош, Й. Камей, А. Э. Хассан и Н. Убаяши (2015) Повторное рассмотрение применимости принципа Парето к основным командам разработки в проектах программного обеспечения с открытым исходным кодом. В материалах 14-го Международного семинара по принципам эволюции программного обеспечения, IWPSE 2015, Нью-Йорк, штат Нью-Йорк, США, стр. 46–55. Внешние ссылки: ISBN 9781450338165, Link, Document Цитируется в: §1, §6.
  • ⟦[31] Н. Зазворка, К. Стапель, Э. Кнаусс, Ф. Шулл, В. Р. Базили и К. Шнайдер (2010) Соблюдают ли разработчики процесс: исследование экстремального программирования. В материалах Международного симпозиума по эмпирической разработке программного обеспечения и измерениям 2010 года, организованного Ассоциацией вычислительной техники и Институтом инженеров электротехники и электроники, ESEM ’10, Нью-Йорк, штат Нью-Йорк, США. Внешние ссылки: ISBN 9781450300391, Link, Document Цитируется в: §1, §1, §1, §2, §4.1⟧.
  • ⟦[32] Т. Жао, В. Си, В. Ли и А. Й. Зомайя (2021) На пути к минимизации метрики RR для измерения устойчивости сети. IEEE Transactions on Network Science and Engineering 8 (4), стр. 3290–3302. Внешние ссылки: Document Цитируется в: §1, §4.3, §8.1⟧.
  • ⟦[33] Д. Зукерман (2006) Линейные экстракторы степени и недоступность аппроксимации для максимальной клики и хроматического числа. В материалах тридцать восьмого ежегодного симпозиума ACM по теории вычислений, с. 681–690. Цитируется в: §5.1.