Maximum independent sets of graph vertices searching for software projects improvement

The need is fixed to software project enhancing with seamless integration of technological-descriptive and normative project manage- ment approaches by means of classical Graph Discrete Optimization Problems tailoring for software project management tasks, poorly equipped with best practices within...

Повний опис

Збережено в:
Бібліографічні деталі
Дата:2023
Автори: Slabospitska, O.O., Stetsyuk, P.I., Khomiak, O.M.
Формат: Стаття
Мова:Ukrainian
Опубліковано: Інститут програмних систем НАН України 2023
Теми:
Онлайн доступ:https://pp.isofts.kiev.ua/index.php/ojs1/article/view/509
Теги: Додати тег
Немає тегів, Будьте першим, хто поставить тег для цього запису!
Назва журналу:Problems in programming
Завантажити файл: Pdf

Репозитарії

Problems in programming
id pp_isofts_kiev_ua-article-509
record_format ojs
resource_txt_mv ppisoftskievua/47/c1470202eb3d8d1e05b025dd128ed447.pdf
spelling pp_isofts_kiev_ua-article-5092023-06-24T12:21:20Z Maximum independent sets of graph vertices searching for software projects improvement Пошук максимальних незалежних множин вершин графа для вдосконалення програмних проєктів Slabospitska, O.O. Stetsyuk, P.I. Khomiak, O.M. software project; resource allocation; Boolean linear programming problem; independent set of graph vertices; minimal graph coloring; Vizing-Plesnevich algorithm UDC 519.8 програмний проект; розподіл ресурсів; задача булевого лінійного програмування; незалежна множина вершин графу; мінімальне розфарбування графу; алгоритм Візинга-Плесневича УДК 519.8 The need is fixed to software project enhancing with seamless integration of technological-descriptive and normative project manage- ment approaches by means of classical Graph Discrete Optimization Problems tailoring for software project management tasks, poorly equipped with best practices within technological approach. Class of software project management tasks is proposed to demonstrate the benefits of such integration. Two Boolean linear programming problems are investigated for searching some maximum size indepen- dent set (Section 1) and an algorithm for searching all possible maximum size independent sets (Section 2). Section 3 presents Problem Statement for searching a given number of non-intersecting independent sets with maximum sum of vertices’ numbers within independent sets. Based on it, Vizing-Plesnevich algorithm is described for coloring the graph vertices with the minimum number of colors.To solve Boolean problems, both specialized mathematical programming language AMPL and corresponding solver program named gu- robi are used. For basic algorithms developed, reference AMPL code versions are given as well as their running results.Illustrative examples of software project enhancing with the algorithms elaborated are considered in Section 4, namely: 25 specialists being conflicted during their previous projects partitioning into coherent conflict-free sub-teams for software projects portfolio; schedule optimization for autonomous testing of reusable components within a critical software system; cores composing for independent teams in a critical software project.Prombles in programming 2022; 3-4: 73-84  Зафіксовано потребу вдосконалення програмного проекту за рахунок непротирічної інтеграції технологічно-описового та норма- тивного підходів проектного менеджменту шляхом налаштування класичних задач дискретної оптимізації на графах для задач керування програмним проектом, кращі практики розв’язання яких недостатньо регламентовані в руслі технологічного підходу. Запропоновано клас задач керування програмним проектом для демонстрації перспективності зазначеної інтеграції. Досліджено дві задачі булевого лінійного програмування для знаходження деякої незалежної множини максимального розміру (розділ 1) та алгоритм знаходження всіх можливих незалежних множин максимального розміру (розділ 2). У розділі 3 надано постановку задачі знаходження заданої кількості незалежних множин, які не перетинаються й мають найбільшу суму кількостей вершин у незалежних множинах. На її основі описано алгоритм Візинга-Плесневича для розфарбування вершин графа мінімальною кількістю кольорів. Для розв’язання булевих задач використано спеціалізовану мову математичного програмування AMPL і відповідну їй програму-солвер gurobi. Для основних розроблених алгоритмів наведено рамкові версії коду мовою AMPL та результати їх запускання.У розділі 4 розглянуто показові приклади вдосконалення програмного проекту за допомогою розроблених алгоритмів: формуван- ня з 25 фахівців, між якими в попередніх проектах мали місце конфлікти, згуртованих безконфліктних під-команд для портфеля програмних проектів; оптимізації розкладу автономного тестування компонентів повторного використання в складі критичної програмної системи; формування ядер незалежних команд у критичному програмному проекті.Prombles in programming 2022; 3-4: 73-84 Інститут програмних систем НАН України 2023-01-23 Article Article application/pdf https://pp.isofts.kiev.ua/index.php/ojs1/article/view/509 10.15407/pp2022.03-04.073 PROBLEMS IN PROGRAMMING; No 3-4 (2022); 73-84 ПРОБЛЕМЫ ПРОГРАММИРОВАНИЯ; No 3-4 (2022); 73-84 ПРОБЛЕМИ ПРОГРАМУВАННЯ; No 3-4 (2022); 73-84 1727-4907 10.15407/pp2022.03-04 uk https://pp.isofts.kiev.ua/index.php/ojs1/article/view/509/562 Copyright (c) 2023 PROBLEMS IN PROGRAMMING
institution Problems in programming
baseUrl_str https://pp.isofts.kiev.ua/index.php/ojs1/oai
datestamp_date 2023-06-24T12:21:20Z
collection OJS
language Ukrainian
topic software project
resource allocation
Boolean linear programming problem
independent set of graph vertices
minimal graph coloring
Vizing-Plesnevich algorithm
UDC 519.8
spellingShingle software project
resource allocation
Boolean linear programming problem
independent set of graph vertices
minimal graph coloring
Vizing-Plesnevich algorithm
UDC 519.8
Slabospitska, O.O.
Stetsyuk, P.I.
Khomiak, O.M.
Maximum independent sets of graph vertices searching for software projects improvement
topic_facet software project
resource allocation
Boolean linear programming problem
independent set of graph vertices
minimal graph coloring
Vizing-Plesnevich algorithm
UDC 519.8
програмний проект
розподіл ресурсів
задача булевого лінійного програмування
незалежна множина вершин графу
мінімальне розфарбування графу
алгоритм Візинга-Плесневича
УДК 519.8
format Article
author Slabospitska, O.O.
Stetsyuk, P.I.
Khomiak, O.M.
author_facet Slabospitska, O.O.
Stetsyuk, P.I.
Khomiak, O.M.
author_sort Slabospitska, O.O.
title Maximum independent sets of graph vertices searching for software projects improvement
title_short Maximum independent sets of graph vertices searching for software projects improvement
title_full Maximum independent sets of graph vertices searching for software projects improvement
title_fullStr Maximum independent sets of graph vertices searching for software projects improvement
title_full_unstemmed Maximum independent sets of graph vertices searching for software projects improvement
title_sort maximum independent sets of graph vertices searching for software projects improvement
title_alt Пошук максимальних незалежних множин вершин графа для вдосконалення програмних проєктів
description The need is fixed to software project enhancing with seamless integration of technological-descriptive and normative project manage- ment approaches by means of classical Graph Discrete Optimization Problems tailoring for software project management tasks, poorly equipped with best practices within technological approach. Class of software project management tasks is proposed to demonstrate the benefits of such integration. Two Boolean linear programming problems are investigated for searching some maximum size indepen- dent set (Section 1) and an algorithm for searching all possible maximum size independent sets (Section 2). Section 3 presents Problem Statement for searching a given number of non-intersecting independent sets with maximum sum of vertices’ numbers within independent sets. Based on it, Vizing-Plesnevich algorithm is described for coloring the graph vertices with the minimum number of colors.To solve Boolean problems, both specialized mathematical programming language AMPL and corresponding solver program named gu- robi are used. For basic algorithms developed, reference AMPL code versions are given as well as their running results.Illustrative examples of software project enhancing with the algorithms elaborated are considered in Section 4, namely: 25 specialists being conflicted during their previous projects partitioning into coherent conflict-free sub-teams for software projects portfolio; schedule optimization for autonomous testing of reusable components within a critical software system; cores composing for independent teams in a critical software project.Prombles in programming 2022; 3-4: 73-84 
publisher Інститут програмних систем НАН України
publishDate 2023
url https://pp.isofts.kiev.ua/index.php/ojs1/article/view/509
work_keys_str_mv AT slabospitskaoo maximumindependentsetsofgraphverticessearchingforsoftwareprojectsimprovement
AT stetsyukpi maximumindependentsetsofgraphverticessearchingforsoftwareprojectsimprovement
AT khomiakom maximumindependentsetsofgraphverticessearchingforsoftwareprojectsimprovement
AT slabospitskaoo pošukmaksimalʹnihnezaležnihmnožinveršingrafadlâvdoskonalennâprogramnihproêktív
AT stetsyukpi pošukmaksimalʹnihnezaležnihmnožinveršingrafadlâvdoskonalennâprogramnihproêktív
AT khomiakom pošukmaksimalʹnihnezaležnihmnožinveršingrafadlâvdoskonalennâprogramnihproêktív
first_indexed 2024-09-12T19:29:38Z
last_indexed 2024-09-12T19:29:38Z
_version_ 1815407477489926144
fulltext 73 Методи і засоби програмної інженерії УДК 519.8 https://doi.org/10/15407/pp2022.03-04.073 ПОШУК МАКСИМАЛЬНИХ НЕЗАЛЕЖНИХ МНОЖИН ВЕРШИН ГРАФА ДЛЯ ВДОСКОНАЛЕННЯ ПРОГРАМНИХ ПРОЕКТІВ Ольга Слабоспицька, Петро Стецюк, Ольга Хом’як Зафіксовано потребу вдосконалення програмного проекту за рахунок непротирічної інтеграції технологічно-описового та норма- тивного підходів проектного менеджменту шляхом налаштування класичних задач дискретної оптимізації на графах для задач керування програмним проектом, кращі практики розв’язання яких недостатньо регламентовані в руслі технологічного підходу. Запропоновано клас задач керування програмним проектом для демонстрації перспективності зазначеної інтеграції. Досліджено дві задачі булевого лінійного програмування для знаходження деякої незалежної множини максимального розміру (розділ 1) та алгоритм знаходження всіх можливих незалежних множин максимального розміру (розділ 2). У розділі 3 надано постановку задачі знаходження заданої кількості незалежних множин, які не перетинаються й мають найбільшу суму кількостей вершин у незалежних множинах. На її основі описано алгоритм Візинга-Плесневича для розфарбування вершин графа мінімальною кількістю кольорів. Для розв’язання булевих задач використано спеціалізовану мову математичного програмування AMPL і відповідну їй програму- солвер gurobi. Для основних розроблених алгоритмів наведено рамкові версії коду мовою AMPL та результати їх запускання. У розділі 4 розглянуто показові приклади вдосконалення програмного проекту за допомогою розроблених алгоритмів: формуван- ня з 25 фахівців, між якими в попередніх проектах мали місце конфлікти, згуртованих безконфліктних під-команд для портфеля програмних проектів; оптимізації розкладу автономного тестування компонентів повторного використання в складі критичної програмної системи; формування ядер незалежних команд у критичному програмному проекті. Ключові слова: програмний проект, розподіл ресурсів, задача булевого лінійного програмування, незалежна множина вершин графу, мінімальне розфарбування графу, алгоритм Візинга-Плесневича. The need is fixed to software project enhancing with seamless integration of technological-descriptive and normative project manage- ment approaches by means of classical Graph Discrete Optimization Problems tailoring for software project management tasks, poorly equipped with best practices within technological approach. Class of software project management tasks is proposed to demonstrate the benefits of such integration. Two Boolean linear programming problems are investigated for searching some maximum size indepen- dent set (Section 1) and an algorithm for searching all possible maximum size independent sets (Section 2). Section 3 presents Problem Statement for searching a given number of non-intersecting independent sets with maximum sum of vertices’ numbers within independent sets. Based on it, Vizing-Plesnevich algorithm is described for coloring the graph vertices with the minimum number of colors. To solve Boolean problems, both specialized mathematical programming language AMPL and corresponding solver program named gu- robi are used. For basic algorithms developed, reference AMPL code versions are given as well as their running results. Illustrative examples of software project enhancing with the algorithms elaborated are considered in Section 4, namely: 25 specialists being conflicted during their previous projects partitioning into coherent conflict-free sub-teams for software projects portfolio; schedule optimization for autonomous testing of reusable components within a critical software system; cores composing for independent teams in a critical software project. Keywords: software project, resource allocation, Boolean linear programming problem, independent set of graph vertices, minimal graph coloring, Vizing-Plesnevich algorithm. Вступ Однією з актуальних тенденцій стрімкого розвитку індустрії програмного забезпечення в світі та Україні є наразі повно-аспектне впровадження проектних форм створення програмних продуктів у найрізно- манітніших предметних областях – від медицини й освіти до медіа-індустрії та міжнародного співробітництва. Однак практика програмних проектів, узагальнена, зокрема, в регулярних звітах авторитетної аналітичної ор- ганізації Standish Group (https://www.standishgroup.com/) висвітлює дедалі нагальнішу потребу непротирічної інтеграції в керуванні програмним проектом двох базових підходів проектного менеджменту: – технологічно-описового, засади якого зафіксовано в Зводі знань з управління проектами (7 ред.) [1]; – нормативного, спрямованого на розроблення взаємоузгоджених приписних правил і процедур вза- ємодії учасників проекту з гарантованими бажаними властивостями за допомогою (імовірнісного) календар- но-мережного планування й управління з потужним сучасним інструментарієм (дискретної) оптимізації на графах, який і гарантує оптимальність отримуваних рішень [2]. Важливим аспектом цієї інтеграції є виокремлення класичних задач алгоритмів дискретної оптимі- зації та їх налаштування для ресурсно прийнятного отримання оптимальних розв’язків тих задач керування програмним проектом, для яких технологічний підхід не надає однозначних рекомендацій щодо вибору кра- щих і гірших практик, у ролі прототипу для доцільного подальшого вдосконалення. Внаслідок різнорідності й складності сучасних програмних продуктів і методологій їх розроблення показовими прикладами таких задач є формування з наявних фахівців найбільш згуртованої команди, а також виявлення технологічно незалежних робіт проекту та робіт, що доцільно виконувати одночасно. Саме ці задачі розглянуті авторами в [3], де їм зіставлені спеціальні постановки класичних задач про максимальну незалежну множину та хроматичне число неорієнтованого графа. Стаття, презентована наразі, містить подальші результати досліджень [3]. Вона має подвійну мету: © О.О. Слабоспицька, П.І. Стецюк, О.М. Хом’як, 2022 ISSN 1727-4907. Проблеми програмування. 2022. № 3-4. Спеціальний випуск 74 Методи і засоби програмної інженерії – засвідчити перспективність залучення алгоритмів дискретної оптимізації на графах для вдоскона- лення програмного проекту та окреслити першочергові задачі, для яких воно доцільне; – уточнити постановки задачі про максимальну незалежну множину, подані в [3], і надати більш ефективні коди мовою AMPL для знаходження усіх максимальних незалежних множин і максимальної суми незалежних множин вершин неорієнтованого графа. 1. Булеві задачі для знаходження числа незалежності та їх властивості Множину вершин графа G називають незалежною, якщо ніякі дві вершини цієї множини не є суміжни- ми (не з’єднані ребром). Індукований цією множиною підграф складається з ізольованих вершин, їх кількість визначає розмір незалежної множини вершин графа. Оптимізаційна задача про максимальну незалежну мно- жину формулюється таким чином: у заданому неорієнтованому графі G без петель потрібно знайти незалежну множину максимального розміру. Цей розмір називають числом незалежності або числом внутрішньої стійкос- ті і позначають α(G). Задача знаходження числа незалежності α(G) належить до класу NP-повних задач [4, 5]. Задача про максимальну незалежну множину тісно пов’язана з задачею знаходження хроматичного числа Методи і засоби програмної інженерії – уточнити постановки задачі про максимальну незалежну множину, подані в [3], і надати більш ефе- ктивні коди мовою AMPL для знаходження усіх максимальних незалежних множин і максимальної суми неза- лежних множин вершин неорієнтованого графа. 1. Булеві задачі для знаходження числа незалежності та їх властивості Множину вершин графа G називають незалежною, якщо ніякі дві вершини цієї множини не є суміжни- ми (не з'єднані ребром). Індукований цією множиною підграф складається з ізольованих вершин, їх кількість визначає розмір незалежної множини вершин графа. Оптимізаційна задача про максимальну незалежну множи- ну формулюється таким чином: у заданому неорієнтованому графі G без петель потрібно знайти незалежну множину максимального розміру. Цей розмір називають числом незалежності або числом внутрішньої стійкості і позначають ( )G . Задача знаходження числа незалежності ( )G належить до класу NP-повних задач [4, 5]. Задача про максимальну незалежну множину тісно пов'язана з задачею знаходження хроматичного числа ( )G – найменшої кількості різних кольорів, якими можна розфарбувати вершини графа G таким чином, щоб ніякі дві суміжні вершини не були розфарбовані однаково. В.Г. Візинг та Г.С. Плесневич встановили [6], що задачу знаходження хроматичного числа можна звести до ітеративної послідовності задач знаходження числа незалежності графів, отриманих як декартів добуток повних графів та копій графа G . Нехай  0,1ix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в незалеж- ну множину вершин графа ( ( ), ( ))G V G E G= , і нулю – в протилежному випадку. Тут ( )V G – множина вершин графа G , ( )E G – множина його ребер. Щоб знайти число незалежності ( )G , достатньо знайти один із розв'яз- ків задачі булевого лінійного програмуваннях [7]:  0,1 ( ) ( ) max i ix i V G G x   =  (1) за обмежень 1, ( , ) ( ).i jx x i j E G+   (2) Задача (1), (2) містить ( )V G булевих змінних та ( )E G обмежень у формі лінійних нерівностей. Обмеження (2) означають, що коли у графі G вершини i та j з'єднані ребром, то тільки одна з них буде належати неза- лежній множині вершин графа G . Задача (1), (2) може бути переформульована у вигляді задачі булевого лінійного програмування, яка ви- користовується для опису максимального k-плексу [8]. Для цього достатньо обмеження (2) замінити на такі: ( ) ( ) ( )1 , .j i i j i x d x i V G   −   (3) Задача (1), (3) містить ( )V G булевих змінних та ( )V G обмежень у формі лінійних нерівностей. Тут граф G представлено у формі ( ( ), ( ))G V G G=  , де  ( ) ( ), 1, ,G i i n =  = , а ( )i – кінцеві вершини тих дуг, у яких початковою є вершина i , яка має ступінь ( )id i=  . Обмеження (3) означають, що коли вершина належить незалежній множині вершин графа G , то жодна суміжна з нею вершина не може належати цій незалежній множині. В задачах (1), (3) кількість лінійних обмежень буде значно меншою, ніж у задачі (1), (2), для графів з великою кількістю ребер. Число незалежності ( )G визначається однозначно, але йому може відповідати багато максимальних не- залежних множин графа G . Так, наприклад, граф 6W (має форму колеса на основі 5C , циклу з п’яти вершин), множину ребер та матрицю суміжності якого наведено на рис. 1, містить п'ять незалежних множин розміру 6( ) 2W = . На рис. 1 наведено ці множини:  1 1,3S = ,  2 1,4S = ,  3 2,4S = ,  4 2,5S = ,  5 3,5S = . Вершини, які входять в них, позначено чорним кольором. – найменшої кількості різних кольорів, якими можна розфарбувати вершини графа G таким чином, щоб ніякі дві суміжні вершини не були розфарбовані однаково. В.Г. Візинг та Г.С. Плесневич встановили [6], що задачу знаходження хроматичного числа можна звести до ітеративної послідовності задач знаходження числа незалежності графів, отриманих як декартів добуток повних графів та копій графа G. Нехай Методи і засоби програмної інженерії – уточнити постановки задачі про максимальну незалежну множину, подані в [3], і надати більш ефе- ктивні коди мовою AMPL для знаходження усіх максимальних незалежних множин і максимальної суми неза- лежних множин вершин неорієнтованого графа. 1. Булеві задачі для знаходження числа незалежності та їх властивості Множину вершин графа G називають незалежною, якщо ніякі дві вершини цієї множини не є суміжни- ми (не з'єднані ребром). Індукований цією множиною підграф складається з ізольованих вершин, їх кількість визначає розмір незалежної множини вершин графа. Оптимізаційна задача про максимальну незалежну множи- ну формулюється таким чином: у заданому неорієнтованому графі G без петель потрібно знайти незалежну множину максимального розміру. Цей розмір називають числом незалежності або числом внутрішньої стійкості і позначають ( )G . Задача знаходження числа незалежності ( )G належить до класу NP-повних задач [4, 5]. Задача про максимальну незалежну множину тісно пов'язана з задачею знаходження хроматичного числа ( )G – найменшої кількості різних кольорів, якими можна розфарбувати вершини графа G таким чином, щоб ніякі дві суміжні вершини не були розфарбовані однаково. В.Г. Візинг та Г.С. Плесневич встановили [6], що задачу знаходження хроматичного числа можна звести до ітеративної послідовності задач знаходження числа незалежності графів, отриманих як декартів добуток повних графів та копій графа G . Нехай  0,1ix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в незалеж- ну множину вершин графа ( ( ), ( ))G V G E G= , і нулю – в протилежному випадку. Тут ( )V G – множина вершин графа G , ( )E G – множина його ребер. Щоб знайти число незалежності ( )G , достатньо знайти один із розв'яз- ків задачі булевого лінійного програмуваннях [7]:  0,1 ( ) ( ) max i ix i V G G x   =  (1) за обмежень 1, ( , ) ( ).i jx x i j E G+   (2) Задача (1), (2) містить ( )V G булевих змінних та ( )E G обмежень у формі лінійних нерівностей. Обмеження (2) означають, що коли у графі G вершини i та j з'єднані ребром, то тільки одна з них буде належати неза- лежній множині вершин графа G . Задача (1), (2) може бути переформульована у вигляді задачі булевого лінійного програмування, яка ви- користовується для опису максимального k-плексу [8]. Для цього достатньо обмеження (2) замінити на такі: ( ) ( ) ( )1 , .j i i j i x d x i V G   −   (3) Задача (1), (3) містить ( )V G булевих змінних та ( )V G обмежень у формі лінійних нерівностей. Тут граф G представлено у формі ( ( ), ( ))G V G G=  , де  ( ) ( ), 1, ,G i i n =  = , а ( )i – кінцеві вершини тих дуг, у яких початковою є вершина i , яка має ступінь ( )id i=  . Обмеження (3) означають, що коли вершина належить незалежній множині вершин графа G , то жодна суміжна з нею вершина не може належати цій незалежній множині. В задачах (1), (3) кількість лінійних обмежень буде значно меншою, ніж у задачі (1), (2), для графів з великою кількістю ребер. Число незалежності ( )G визначається однозначно, але йому може відповідати багато максимальних не- залежних множин графа G . Так, наприклад, граф 6W (має форму колеса на основі 5C , циклу з п’яти вершин), множину ребер та матрицю суміжності якого наведено на рис. 1, містить п'ять незалежних множин розміру 6( ) 2W = . На рис. 1 наведено ці множини:  1 1,3S = ,  2 1,4S = ,  3 2,4S = ,  4 2,5S = ,  5 3,5S = . Вершини, які входять в них, позначено чорним кольором. – булева змінна, яка дорівнює одиниці, якщо вершина Методи і засоби програмної інженерії – уточнити постановки задачі про максимальну незалежну множину, подані в [3], і надати більш ефе- ктивні коди мовою AMPL для знаходження усіх максимальних незалежних множин і максимальної суми неза- лежних множин вершин неорієнтованого графа. 1. Булеві задачі для знаходження числа незалежності та їх властивості Множину вершин графа G називають незалежною, якщо ніякі дві вершини цієї множини не є суміжни- ми (не з'єднані ребром). Індукований цією множиною підграф складається з ізольованих вершин, їх кількість визначає розмір незалежної множини вершин графа. Оптимізаційна задача про максимальну незалежну множи- ну формулюється таким чином: у заданому неорієнтованому графі G без петель потрібно знайти незалежну множину максимального розміру. Цей розмір називають числом незалежності або числом внутрішньої стійкості і позначають ( )G . Задача знаходження числа незалежності ( )G належить до класу NP-повних задач [4, 5]. Задача про максимальну незалежну множину тісно пов'язана з задачею знаходження хроматичного числа ( )G – найменшої кількості різних кольорів, якими можна розфарбувати вершини графа G таким чином, щоб ніякі дві суміжні вершини не були розфарбовані однаково. В.Г. Візинг та Г.С. Плесневич встановили [6], що задачу знаходження хроматичного числа можна звести до ітеративної послідовності задач знаходження числа незалежності графів, отриманих як декартів добуток повних графів та копій графа G . Нехай  0,1ix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в незалеж- ну множину вершин графа ( ( ), ( ))G V G E G= , і нулю – в протилежному випадку. Тут ( )V G – множина вершин графа G , ( )E G – множина його ребер. Щоб знайти число незалежності ( )G , достатньо знайти один із розв'яз- ків задачі булевого лінійного програмуваннях [7]:  0,1 ( ) ( ) max i ix i V G G x   =  (1) за обмежень 1, ( , ) ( ).i jx x i j E G+   (2) Задача (1), (2) містить ( )V G булевих змінних та ( )E G обмежень у формі лінійних нерівностей. Обмеження (2) означають, що коли у графі G вершини i та j з'єднані ребром, то тільки одна з них буде належати неза- лежній множині вершин графа G . Задача (1), (2) може бути переформульована у вигляді задачі булевого лінійного програмування, яка ви- користовується для опису максимального k-плексу [8]. Для цього достатньо обмеження (2) замінити на такі: ( ) ( ) ( )1 , .j i i j i x d x i V G   −   (3) Задача (1), (3) містить ( )V G булевих змінних та ( )V G обмежень у формі лінійних нерівностей. Тут граф G представлено у формі ( ( ), ( ))G V G G=  , де  ( ) ( ), 1, ,G i i n =  = , а ( )i – кінцеві вершини тих дуг, у яких початковою є вершина i , яка має ступінь ( )id i=  . Обмеження (3) означають, що коли вершина належить незалежній множині вершин графа G , то жодна суміжна з нею вершина не може належати цій незалежній множині. В задачах (1), (3) кількість лінійних обмежень буде значно меншою, ніж у задачі (1), (2), для графів з великою кількістю ребер. Число незалежності ( )G визначається однозначно, але йому може відповідати багато максимальних не- залежних множин графа G . Так, наприклад, граф 6W (має форму колеса на основі 5C , циклу з п’яти вершин), множину ребер та матрицю суміжності якого наведено на рис. 1, містить п'ять незалежних множин розміру 6( ) 2W = . На рис. 1 наведено ці множини:  1 1,3S = ,  2 1,4S = ,  3 2,4S = ,  4 2,5S = ,  5 3,5S = . Вершини, які входять в них, позначено чорним кольором. включається в не- залежну множину вершин графа Методи і засоби програмної інженерії – уточнити постановки задачі про максимальну незалежну множину, подані в [3], і надати більш ефе- ктивні коди мовою AMPL для знаходження усіх максимальних незалежних множин і максимальної суми неза- лежних множин вершин неорієнтованого графа. 1. Булеві задачі для знаходження числа незалежності та їх властивості Множину вершин графа G називають незалежною, якщо ніякі дві вершини цієї множини не є суміжни- ми (не з'єднані ребром). Індукований цією множиною підграф складається з ізольованих вершин, їх кількість визначає розмір незалежної множини вершин графа. Оптимізаційна задача про максимальну незалежну множи- ну формулюється таким чином: у заданому неорієнтованому графі G без петель потрібно знайти незалежну множину максимального розміру. Цей розмір називають числом незалежності або числом внутрішньої стійкості і позначають ( )G . Задача знаходження числа незалежності ( )G належить до класу NP-повних задач [4, 5]. Задача про максимальну незалежну множину тісно пов'язана з задачею знаходження хроматичного числа ( )G – найменшої кількості різних кольорів, якими можна розфарбувати вершини графа G таким чином, щоб ніякі дві суміжні вершини не були розфарбовані однаково. В.Г. Візинг та Г.С. Плесневич встановили [6], що задачу знаходження хроматичного числа можна звести до ітеративної послідовності задач знаходження числа незалежності графів, отриманих як декартів добуток повних графів та копій графа G . Нехай  0,1ix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в незалеж- ну множину вершин графа ( ( ), ( ))G V G E G= , і нулю – в протилежному випадку. Тут ( )V G – множина вершин графа G , ( )E G – множина його ребер. Щоб знайти число незалежності ( )G , достатньо знайти один із розв'яз- ків задачі булевого лінійного програмуваннях [7]:  0,1 ( ) ( ) max i ix i V G G x   =  (1) за обмежень 1, ( , ) ( ).i jx x i j E G+   (2) Задача (1), (2) містить ( )V G булевих змінних та ( )E G обмежень у формі лінійних нерівностей. Обмеження (2) означають, що коли у графі G вершини i та j з'єднані ребром, то тільки одна з них буде належати неза- лежній множині вершин графа G . Задача (1), (2) може бути переформульована у вигляді задачі булевого лінійного програмування, яка ви- користовується для опису максимального k-плексу [8]. Для цього достатньо обмеження (2) замінити на такі: ( ) ( ) ( )1 , .j i i j i x d x i V G   −   (3) Задача (1), (3) містить ( )V G булевих змінних та ( )V G обмежень у формі лінійних нерівностей. Тут граф G представлено у формі ( ( ), ( ))G V G G=  , де  ( ) ( ), 1, ,G i i n =  = , а ( )i – кінцеві вершини тих дуг, у яких початковою є вершина i , яка має ступінь ( )id i=  . Обмеження (3) означають, що коли вершина належить незалежній множині вершин графа G , то жодна суміжна з нею вершина не може належати цій незалежній множині. В задачах (1), (3) кількість лінійних обмежень буде значно меншою, ніж у задачі (1), (2), для графів з великою кількістю ребер. Число незалежності ( )G визначається однозначно, але йому може відповідати багато максимальних не- залежних множин графа G . Так, наприклад, граф 6W (має форму колеса на основі 5C , циклу з п’яти вершин), множину ребер та матрицю суміжності якого наведено на рис. 1, містить п'ять незалежних множин розміру 6( ) 2W = . На рис. 1 наведено ці множини:  1 1,3S = ,  2 1,4S = ,  3 2,4S = ,  4 2,5S = ,  5 3,5S = . Вершини, які входять в них, позначено чорним кольором. , і нулю – в протилежному випадку. Тут Методи і засоби програмної інженерії – уточнити постановки задачі про максимальну незалежну множину, подані в [3], і надати більш ефе- ктивні коди мовою AMPL для знаходження усіх максимальних незалежних множин і максимальної суми неза- лежних множин вершин неорієнтованого графа. 1. Булеві задачі для знаходження числа незалежності та їх властивості Множину вершин графа G називають незалежною, якщо ніякі дві вершини цієї множини не є суміжни- ми (не з'єднані ребром). Індукований цією множиною підграф складається з ізольованих вершин, їх кількість визначає розмір незалежної множини вершин графа. Оптимізаційна задача про максимальну незалежну множи- ну формулюється таким чином: у заданому неорієнтованому графі G без петель потрібно знайти незалежну множину максимального розміру. Цей розмір називають числом незалежності або числом внутрішньої стійкості і позначають ( )G . Задача знаходження числа незалежності ( )G належить до класу NP-повних задач [4, 5]. Задача про максимальну незалежну множину тісно пов'язана з задачею знаходження хроматичного числа ( )G – найменшої кількості різних кольорів, якими можна розфарбувати вершини графа G таким чином, щоб ніякі дві суміжні вершини не були розфарбовані однаково. В.Г. Візинг та Г.С. Плесневич встановили [6], що задачу знаходження хроматичного числа можна звести до ітеративної послідовності задач знаходження числа незалежності графів, отриманих як декартів добуток повних графів та копій графа G . Нехай  0,1ix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в незалеж- ну множину вершин графа ( ( ), ( ))G V G E G= , і нулю – в протилежному випадку. Тут ( )V G – множина вершин графа G , ( )E G – множина його ребер. Щоб знайти число незалежності ( )G , достатньо знайти один із розв'яз- ків задачі булевого лінійного програмуваннях [7]:  0,1 ( ) ( ) max i ix i V G G x   =  (1) за обмежень 1, ( , ) ( ).i jx x i j E G+   (2) Задача (1), (2) містить ( )V G булевих змінних та ( )E G обмежень у формі лінійних нерівностей. Обмеження (2) означають, що коли у графі G вершини i та j з'єднані ребром, то тільки одна з них буде належати неза- лежній множині вершин графа G . Задача (1), (2) може бути переформульована у вигляді задачі булевого лінійного програмування, яка ви- користовується для опису максимального k-плексу [8]. Для цього достатньо обмеження (2) замінити на такі: ( ) ( ) ( )1 , .j i i j i x d x i V G   −   (3) Задача (1), (3) містить ( )V G булевих змінних та ( )V G обмежень у формі лінійних нерівностей. Тут граф G представлено у формі ( ( ), ( ))G V G G=  , де  ( ) ( ), 1, ,G i i n =  = , а ( )i – кінцеві вершини тих дуг, у яких початковою є вершина i , яка має ступінь ( )id i=  . Обмеження (3) означають, що коли вершина належить незалежній множині вершин графа G , то жодна суміжна з нею вершина не може належати цій незалежній множині. В задачах (1), (3) кількість лінійних обмежень буде значно меншою, ніж у задачі (1), (2), для графів з великою кількістю ребер. Число незалежності ( )G визначається однозначно, але йому може відповідати багато максимальних не- залежних множин графа G . Так, наприклад, граф 6W (має форму колеса на основі 5C , циклу з п’яти вершин), множину ребер та матрицю суміжності якого наведено на рис. 1, містить п'ять незалежних множин розміру 6( ) 2W = . На рис. 1 наведено ці множини:  1 1,3S = ,  2 1,4S = ,  3 2,4S = ,  4 2,5S = ,  5 3,5S = . Вершини, які входять в них, позначено чорним кольором. – множина вершин графа Методи і засоби програмної інженерії – уточнити постановки задачі про максимальну незалежну множину, подані в [3], і надати більш ефе- ктивні коди мовою AMPL для знаходження усіх максимальних незалежних множин і максимальної суми неза- лежних множин вершин неорієнтованого графа. 1. Булеві задачі для знаходження числа незалежності та їх властивості Множину вершин графа G називають незалежною, якщо ніякі дві вершини цієї множини не є суміжни- ми (не з'єднані ребром). Індукований цією множиною підграф складається з ізольованих вершин, їх кількість визначає розмір незалежної множини вершин графа. Оптимізаційна задача про максимальну незалежну множи- ну формулюється таким чином: у заданому неорієнтованому графі G без петель потрібно знайти незалежну множину максимального розміру. Цей розмір називають числом незалежності або числом внутрішньої стійкості і позначають ( )G . Задача знаходження числа незалежності ( )G належить до класу NP-повних задач [4, 5]. Задача про максимальну незалежну множину тісно пов'язана з задачею знаходження хроматичного числа ( )G – найменшої кількості різних кольорів, якими можна розфарбувати вершини графа G таким чином, щоб ніякі дві суміжні вершини не були розфарбовані однаково. В.Г. Візинг та Г.С. Плесневич встановили [6], що задачу знаходження хроматичного числа можна звести до ітеративної послідовності задач знаходження числа незалежності графів, отриманих як декартів добуток повних графів та копій графа G . Нехай  0,1ix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в незалеж- ну множину вершин графа ( ( ), ( ))G V G E G= , і нулю – в протилежному випадку. Тут ( )V G – множина вершин графа G , ( )E G – множина його ребер. Щоб знайти число незалежності ( )G , достатньо знайти один із розв'яз- ків задачі булевого лінійного програмуваннях [7]:  0,1 ( ) ( ) max i ix i V G G x   =  (1) за обмежень 1, ( , ) ( ).i jx x i j E G+   (2) Задача (1), (2) містить ( )V G булевих змінних та ( )E G обмежень у формі лінійних нерівностей. Обмеження (2) означають, що коли у графі G вершини i та j з'єднані ребром, то тільки одна з них буде належати неза- лежній множині вершин графа G . Задача (1), (2) може бути переформульована у вигляді задачі булевого лінійного програмування, яка ви- користовується для опису максимального k-плексу [8]. Для цього достатньо обмеження (2) замінити на такі: ( ) ( ) ( )1 , .j i i j i x d x i V G   −   (3) Задача (1), (3) містить ( )V G булевих змінних та ( )V G обмежень у формі лінійних нерівностей. Тут граф G представлено у формі ( ( ), ( ))G V G G=  , де  ( ) ( ), 1, ,G i i n =  = , а ( )i – кінцеві вершини тих дуг, у яких початковою є вершина i , яка має ступінь ( )id i=  . Обмеження (3) означають, що коли вершина належить незалежній множині вершин графа G , то жодна суміжна з нею вершина не може належати цій незалежній множині. В задачах (1), (3) кількість лінійних обмежень буде значно меншою, ніж у задачі (1), (2), для графів з великою кількістю ребер. Число незалежності ( )G визначається однозначно, але йому може відповідати багато максимальних не- залежних множин графа G . Так, наприклад, граф 6W (має форму колеса на основі 5C , циклу з п’яти вершин), множину ребер та матрицю суміжності якого наведено на рис. 1, містить п'ять незалежних множин розміру 6( ) 2W = . На рис. 1 наведено ці множини:  1 1,3S = ,  2 1,4S = ,  3 2,4S = ,  4 2,5S = ,  5 3,5S = . Вершини, які входять в них, позначено чорним кольором. – множина його ребер. Щоб знайти число незалежності Методи і засоби програмної інженерії – уточнити постановки задачі про максимальну незалежну множину, подані в [3], і надати більш ефе- ктивні коди мовою AMPL для знаходження усіх максимальних незалежних множин і максимальної суми неза- лежних множин вершин неорієнтованого графа. 1. Булеві задачі для знаходження числа незалежності та їх властивості Множину вершин графа G називають незалежною, якщо ніякі дві вершини цієї множини не є суміжни- ми (не з'єднані ребром). Індукований цією множиною підграф складається з ізольованих вершин, їх кількість визначає розмір незалежної множини вершин графа. Оптимізаційна задача про максимальну незалежну множи- ну формулюється таким чином: у заданому неорієнтованому графі G без петель потрібно знайти незалежну множину максимального розміру. Цей розмір називають числом незалежності або числом внутрішньої стійкості і позначають ( )G . Задача знаходження числа незалежності ( )G належить до класу NP-повних задач [4, 5]. Задача про максимальну незалежну множину тісно пов'язана з задачею знаходження хроматичного числа ( )G – найменшої кількості різних кольорів, якими можна розфарбувати вершини графа G таким чином, щоб ніякі дві суміжні вершини не були розфарбовані однаково. В.Г. Візинг та Г.С. Плесневич встановили [6], що задачу знаходження хроматичного числа можна звести до ітеративної послідовності задач знаходження числа незалежності графів, отриманих як декартів добуток повних графів та копій графа G . Нехай  0,1ix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в незалеж- ну множину вершин графа ( ( ), ( ))G V G E G= , і нулю – в протилежному випадку. Тут ( )V G – множина вершин графа G , ( )E G – множина його ребер. Щоб знайти число незалежності ( )G , достатньо знайти один із розв'яз- ків задачі булевого лінійного програмуваннях [7]:  0,1 ( ) ( ) max i ix i V G G x   =  (1) за обмежень 1, ( , ) ( ).i jx x i j E G+   (2) Задача (1), (2) містить ( )V G булевих змінних та ( )E G обмежень у формі лінійних нерівностей. Обмеження (2) означають, що коли у графі G вершини i та j з'єднані ребром, то тільки одна з них буде належати неза- лежній множині вершин графа G . Задача (1), (2) може бути переформульована у вигляді задачі булевого лінійного програмування, яка ви- користовується для опису максимального k-плексу [8]. Для цього достатньо обмеження (2) замінити на такі: ( ) ( ) ( )1 , .j i i j i x d x i V G   −   (3) Задача (1), (3) містить ( )V G булевих змінних та ( )V G обмежень у формі лінійних нерівностей. Тут граф G представлено у формі ( ( ), ( ))G V G G=  , де  ( ) ( ), 1, ,G i i n =  = , а ( )i – кінцеві вершини тих дуг, у яких початковою є вершина i , яка має ступінь ( )id i=  . Обмеження (3) означають, що коли вершина належить незалежній множині вершин графа G , то жодна суміжна з нею вершина не може належати цій незалежній множині. В задачах (1), (3) кількість лінійних обмежень буде значно меншою, ніж у задачі (1), (2), для графів з великою кількістю ребер. Число незалежності ( )G визначається однозначно, але йому може відповідати багато максимальних не- залежних множин графа G . Так, наприклад, граф 6W (має форму колеса на основі 5C , циклу з п’яти вершин), множину ребер та матрицю суміжності якого наведено на рис. 1, містить п'ять незалежних множин розміру 6( ) 2W = . На рис. 1 наведено ці множини:  1 1,3S = ,  2 1,4S = ,  3 2,4S = ,  4 2,5S = ,  5 3,5S = . Вершини, які входять в них, позначено чорним кольором. , достатньо знайти один із розв’язків задачі булевого лінійного програмуваннях [7]: Методи і засоби програмної інженерії – уточнити постановки задачі про максимальну незалежну множину, подані в [3], і надати більш ефе- ктивні коди мовою AMPL для знаходження усіх максимальних незалежних множин і максимальної суми неза- лежних множин вершин неорієнтованого графа. 1. Булеві задачі для знаходження числа незалежності та їх властивості Множину вершин графа G називають незалежною, якщо ніякі дві вершини цієї множини не є суміжни- ми (не з'єднані ребром). Індукований цією множиною підграф складається з ізольованих вершин, їх кількість визначає розмір незалежної множини вершин графа. Оптимізаційна задача про максимальну незалежну множи- ну формулюється таким чином: у заданому неорієнтованому графі G без петель потрібно знайти незалежну множину максимального розміру. Цей розмір називають числом незалежності або числом внутрішньої стійкості і позначають ( )G . Задача знаходження числа незалежності ( )G належить до класу NP-повних задач [4, 5]. Задача про максимальну незалежну множину тісно пов'язана з задачею знаходження хроматичного числа ( )G – найменшої кількості різних кольорів, якими можна розфарбувати вершини графа G таким чином, щоб ніякі дві суміжні вершини не були розфарбовані однаково. В.Г. Візинг та Г.С. Плесневич встановили [6], що задачу знаходження хроматичного числа можна звести до ітеративної послідовності задач знаходження числа незалежності графів, отриманих як декартів добуток повних графів та копій графа G . Нехай  0,1ix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в незалеж- ну множину вершин графа ( ( ), ( ))G V G E G= , і нулю – в протилежному випадку. Тут ( )V G – множина вершин графа G , ( )E G – множина його ребер. Щоб знайти число незалежності ( )G , достатньо знайти один із розв'яз- ків задачі булевого лінійного програмуваннях [7]:  0,1 ( ) ( ) max i ix i V G G x   =  (1) за обмежень 1, ( , ) ( ).i jx x i j E G+   (2) Задача (1), (2) містить ( )V G булевих змінних та ( )E G обмежень у формі лінійних нерівностей. Обмеження (2) означають, що коли у графі G вершини i та j з'єднані ребром, то тільки одна з них буде належати неза- лежній множині вершин графа G . Задача (1), (2) може бути переформульована у вигляді задачі булевого лінійного програмування, яка ви- користовується для опису максимального k-плексу [8]. Для цього достатньо обмеження (2) замінити на такі: ( ) ( ) ( )1 , .j i i j i x d x i V G   −   (3) Задача (1), (3) містить ( )V G булевих змінних та ( )V G обмежень у формі лінійних нерівностей. Тут граф G представлено у формі ( ( ), ( ))G V G G=  , де  ( ) ( ), 1, ,G i i n =  = , а ( )i – кінцеві вершини тих дуг, у яких початковою є вершина i , яка має ступінь ( )id i=  . Обмеження (3) означають, що коли вершина належить незалежній множині вершин графа G , то жодна суміжна з нею вершина не може належати цій незалежній множині. В задачах (1), (3) кількість лінійних обмежень буде значно меншою, ніж у задачі (1), (2), для графів з великою кількістю ребер. Число незалежності ( )G визначається однозначно, але йому може відповідати багато максимальних не- залежних множин графа G . Так, наприклад, граф 6W (має форму колеса на основі 5C , циклу з п’яти вершин), множину ребер та матрицю суміжності якого наведено на рис. 1, містить п'ять незалежних множин розміру 6( ) 2W = . На рис. 1 наведено ці множини:  1 1,3S = ,  2 1,4S = ,  3 2,4S = ,  4 2,5S = ,  5 3,5S = . Вершини, які входять в них, позначено чорним кольором. (1) за обмежень Методи і засоби програмної інженерії – уточнити постановки задачі про максимальну незалежну множину, подані в [3], і надати більш ефе- ктивні коди мовою AMPL для знаходження усіх максимальних незалежних множин і максимальної суми неза- лежних множин вершин неорієнтованого графа. 1. Булеві задачі для знаходження числа незалежності та їх властивості Множину вершин графа G називають незалежною, якщо ніякі дві вершини цієї множини не є суміжни- ми (не з'єднані ребром). Індукований цією множиною підграф складається з ізольованих вершин, їх кількість визначає розмір незалежної множини вершин графа. Оптимізаційна задача про максимальну незалежну множи- ну формулюється таким чином: у заданому неорієнтованому графі G без петель потрібно знайти незалежну множину максимального розміру. Цей розмір називають числом незалежності або числом внутрішньої стійкості і позначають ( )G . Задача знаходження числа незалежності ( )G належить до класу NP-повних задач [4, 5]. Задача про максимальну незалежну множину тісно пов'язана з задачею знаходження хроматичного числа ( )G – найменшої кількості різних кольорів, якими можна розфарбувати вершини графа G таким чином, щоб ніякі дві суміжні вершини не були розфарбовані однаково. В.Г. Візинг та Г.С. Плесневич встановили [6], що задачу знаходження хроматичного числа можна звести до ітеративної послідовності задач знаходження числа незалежності графів, отриманих як декартів добуток повних графів та копій графа G . Нехай  0,1ix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в незалеж- ну множину вершин графа ( ( ), ( ))G V G E G= , і нулю – в протилежному випадку. Тут ( )V G – множина вершин графа G , ( )E G – множина його ребер. Щоб знайти число незалежності ( )G , достатньо знайти один із розв'яз- ків задачі булевого лінійного програмуваннях [7]:  0,1 ( ) ( ) max i ix i V G G x   =  (1) за обмежень 1, ( , ) ( ).i jx x i j E G+   (2) Задача (1), (2) містить ( )V G булевих змінних та ( )E G обмежень у формі лінійних нерівностей. Обмеження (2) означають, що коли у графі G вершини i та j з'єднані ребром, то тільки одна з них буде належати неза- лежній множині вершин графа G . Задача (1), (2) може бути переформульована у вигляді задачі булевого лінійного програмування, яка ви- користовується для опису максимального k-плексу [8]. Для цього достатньо обмеження (2) замінити на такі: ( ) ( ) ( )1 , .j i i j i x d x i V G   −   (3) Задача (1), (3) містить ( )V G булевих змінних та ( )V G обмежень у формі лінійних нерівностей. Тут граф G представлено у формі ( ( ), ( ))G V G G=  , де  ( ) ( ), 1, ,G i i n =  = , а ( )i – кінцеві вершини тих дуг, у яких початковою є вершина i , яка має ступінь ( )id i=  . Обмеження (3) означають, що коли вершина належить незалежній множині вершин графа G , то жодна суміжна з нею вершина не може належати цій незалежній множині. В задачах (1), (3) кількість лінійних обмежень буде значно меншою, ніж у задачі (1), (2), для графів з великою кількістю ребер. Число незалежності ( )G визначається однозначно, але йому може відповідати багато максимальних не- залежних множин графа G . Так, наприклад, граф 6W (має форму колеса на основі 5C , циклу з п’яти вершин), множину ребер та матрицю суміжності якого наведено на рис. 1, містить п'ять незалежних множин розміру 6( ) 2W = . На рис. 1 наведено ці множини:  1 1,3S = ,  2 1,4S = ,  3 2,4S = ,  4 2,5S = ,  5 3,5S = . Вершини, які входять в них, позначено чорним кольором. (2) Задача (1), (2) містить Методи і засоби програмної інженерії – уточнити постановки задачі про максимальну незалежну множину, подані в [3], і надати більш ефе- ктивні коди мовою AMPL для знаходження усіх максимальних незалежних множин і максимальної суми неза- лежних множин вершин неорієнтованого графа. 1. Булеві задачі для знаходження числа незалежності та їх властивості Множину вершин графа G називають незалежною, якщо ніякі дві вершини цієї множини не є суміжни- ми (не з'єднані ребром). Індукований цією множиною підграф складається з ізольованих вершин, їх кількість визначає розмір незалежної множини вершин графа. Оптимізаційна задача про максимальну незалежну множи- ну формулюється таким чином: у заданому неорієнтованому графі G без петель потрібно знайти незалежну множину максимального розміру. Цей розмір називають числом незалежності або числом внутрішньої стійкості і позначають ( )G . Задача знаходження числа незалежності ( )G належить до класу NP-повних задач [4, 5]. Задача про максимальну незалежну множину тісно пов'язана з задачею знаходження хроматичного числа ( )G – найменшої кількості різних кольорів, якими можна розфарбувати вершини графа G таким чином, щоб ніякі дві суміжні вершини не були розфарбовані однаково. В.Г. Візинг та Г.С. Плесневич встановили [6], що задачу знаходження хроматичного числа можна звести до ітеративної послідовності задач знаходження числа незалежності графів, отриманих як декартів добуток повних графів та копій графа G . Нехай  0,1ix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в незалеж- ну множину вершин графа ( ( ), ( ))G V G E G= , і нулю – в протилежному випадку. Тут ( )V G – множина вершин графа G , ( )E G – множина його ребер. Щоб знайти число незалежності ( )G , достатньо знайти один із розв'яз- ків задачі булевого лінійного програмуваннях [7]:  0,1 ( ) ( ) max i ix i V G G x   =  (1) за обмежень 1, ( , ) ( ).i jx x i j E G+   (2) Задача (1), (2) містить ( )V G булевих змінних та ( )E G обмежень у формі лінійних нерівностей. Обмеження (2) означають, що коли у графі G вершини i та j з'єднані ребром, то тільки одна з них буде належати неза- лежній множині вершин графа G . Задача (1), (2) може бути переформульована у вигляді задачі булевого лінійного програмування, яка ви- користовується для опису максимального k-плексу [8]. Для цього достатньо обмеження (2) замінити на такі: ( ) ( ) ( )1 , .j i i j i x d x i V G   −   (3) Задача (1), (3) містить ( )V G булевих змінних та ( )V G обмежень у формі лінійних нерівностей. Тут граф G представлено у формі ( ( ), ( ))G V G G=  , де  ( ) ( ), 1, ,G i i n =  = , а ( )i – кінцеві вершини тих дуг, у яких початковою є вершина i , яка має ступінь ( )id i=  . Обмеження (3) означають, що коли вершина належить незалежній множині вершин графа G , то жодна суміжна з нею вершина не може належати цій незалежній множині. В задачах (1), (3) кількість лінійних обмежень буде значно меншою, ніж у задачі (1), (2), для графів з великою кількістю ребер. Число незалежності ( )G визначається однозначно, але йому може відповідати багато максимальних не- залежних множин графа G . Так, наприклад, граф 6W (має форму колеса на основі 5C , циклу з п’яти вершин), множину ребер та матрицю суміжності якого наведено на рис. 1, містить п'ять незалежних множин розміру 6( ) 2W = . На рис. 1 наведено ці множини:  1 1,3S = ,  2 1,4S = ,  3 2,4S = ,  4 2,5S = ,  5 3,5S = . Вершини, які входять в них, позначено чорним кольором. булевих змінних та Методи і засоби програмної інженерії – уточнити постановки задачі про максимальну незалежну множину, подані в [3], і надати більш ефе- ктивні коди мовою AMPL для знаходження усіх максимальних незалежних множин і максимальної суми неза- лежних множин вершин неорієнтованого графа. 1. Булеві задачі для знаходження числа незалежності та їх властивості Множину вершин графа G називають незалежною, якщо ніякі дві вершини цієї множини не є суміжни- ми (не з'єднані ребром). Індукований цією множиною підграф складається з ізольованих вершин, їх кількість визначає розмір незалежної множини вершин графа. Оптимізаційна задача про максимальну незалежну множи- ну формулюється таким чином: у заданому неорієнтованому графі G без петель потрібно знайти незалежну множину максимального розміру. Цей розмір називають числом незалежності або числом внутрішньої стійкості і позначають ( )G . Задача знаходження числа незалежності ( )G належить до класу NP-повних задач [4, 5]. Задача про максимальну незалежну множину тісно пов'язана з задачею знаходження хроматичного числа ( )G – найменшої кількості різних кольорів, якими можна розфарбувати вершини графа G таким чином, щоб ніякі дві суміжні вершини не були розфарбовані однаково. В.Г. Візинг та Г.С. Плесневич встановили [6], що задачу знаходження хроматичного числа можна звести до ітеративної послідовності задач знаходження числа незалежності графів, отриманих як декартів добуток повних графів та копій графа G . Нехай  0,1ix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в незалеж- ну множину вершин графа ( ( ), ( ))G V G E G= , і нулю – в протилежному випадку. Тут ( )V G – множина вершин графа G , ( )E G – множина його ребер. Щоб знайти число незалежності ( )G , достатньо знайти один із розв'яз- ків задачі булевого лінійного програмуваннях [7]:  0,1 ( ) ( ) max i ix i V G G x   =  (1) за обмежень 1, ( , ) ( ).i jx x i j E G+   (2) Задача (1), (2) містить ( )V G булевих змінних та ( )E G обмежень у формі лінійних нерівностей. Обмеження (2) означають, що коли у графі G вершини i та j з'єднані ребром, то тільки одна з них буде належати неза- лежній множині вершин графа G . Задача (1), (2) може бути переформульована у вигляді задачі булевого лінійного програмування, яка ви- користовується для опису максимального k-плексу [8]. Для цього достатньо обмеження (2) замінити на такі: ( ) ( ) ( )1 , .j i i j i x d x i V G   −   (3) Задача (1), (3) містить ( )V G булевих змінних та ( )V G обмежень у формі лінійних нерівностей. Тут граф G представлено у формі ( ( ), ( ))G V G G=  , де  ( ) ( ), 1, ,G i i n =  = , а ( )i – кінцеві вершини тих дуг, у яких початковою є вершина i , яка має ступінь ( )id i=  . Обмеження (3) означають, що коли вершина належить незалежній множині вершин графа G , то жодна суміжна з нею вершина не може належати цій незалежній множині. В задачах (1), (3) кількість лінійних обмежень буде значно меншою, ніж у задачі (1), (2), для графів з великою кількістю ребер. Число незалежності ( )G визначається однозначно, але йому може відповідати багато максимальних не- залежних множин графа G . Так, наприклад, граф 6W (має форму колеса на основі 5C , циклу з п’яти вершин), множину ребер та матрицю суміжності якого наведено на рис. 1, містить п'ять незалежних множин розміру 6( ) 2W = . На рис. 1 наведено ці множини:  1 1,3S = ,  2 1,4S = ,  3 2,4S = ,  4 2,5S = ,  5 3,5S = . Вершини, які входять в них, позначено чорним кольором. обмежень у формі лінійних нерівностей. Обмеження (2) означають, що коли у графі G вершини i та j з’єднані ребром, то тільки одна з них буде належа- ти незалежній множині вершин графа G. Задача (1), (2) може бути переформульована у вигляді задачі булевого лінійного програмування, яка використовується для опису максимального k-плексу [8]. Для цього достатньо обмеження (2) замінити на такі: Методи і засоби програмної інженерії – уточнити постановки задачі про максимальну незалежну множину, подані в [3], і надати більш ефе- ктивні коди мовою AMPL для знаходження усіх максимальних незалежних множин і максимальної суми неза- лежних множин вершин неорієнтованого графа. 1. Булеві задачі для знаходження числа незалежності та їх властивості Множину вершин графа G називають незалежною, якщо ніякі дві вершини цієї множини не є суміжни- ми (не з'єднані ребром). Індукований цією множиною підграф складається з ізольованих вершин, їх кількість визначає розмір незалежної множини вершин графа. Оптимізаційна задача про максимальну незалежну множи- ну формулюється таким чином: у заданому неорієнтованому графі G без петель потрібно знайти незалежну множину максимального розміру. Цей розмір називають числом незалежності або числом внутрішньої стійкості і позначають ( )G . Задача знаходження числа незалежності ( )G належить до класу NP-повних задач [4, 5]. Задача про максимальну незалежну множину тісно пов'язана з задачею знаходження хроматичного числа ( )G – найменшої кількості різних кольорів, якими можна розфарбувати вершини графа G таким чином, щоб ніякі дві суміжні вершини не були розфарбовані однаково. В.Г. Візинг та Г.С. Плесневич встановили [6], що задачу знаходження хроматичного числа можна звести до ітеративної послідовності задач знаходження числа незалежності графів, отриманих як декартів добуток повних графів та копій графа G . Нехай  0,1ix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в незалеж- ну множину вершин графа ( ( ), ( ))G V G E G= , і нулю – в протилежному випадку. Тут ( )V G – множина вершин графа G , ( )E G – множина його ребер. Щоб знайти число незалежності ( )G , достатньо знайти один із розв'яз- ків задачі булевого лінійного програмуваннях [7]:  0,1 ( ) ( ) max i ix i V G G x   =  (1) за обмежень 1, ( , ) ( ).i jx x i j E G+   (2) Задача (1), (2) містить ( )V G булевих змінних та ( )E G обмежень у формі лінійних нерівностей. Обмеження (2) означають, що коли у графі G вершини i та j з'єднані ребром, то тільки одна з них буде належати неза- лежній множині вершин графа G . Задача (1), (2) може бути переформульована у вигляді задачі булевого лінійного програмування, яка ви- користовується для опису максимального k-плексу [8]. Для цього достатньо обмеження (2) замінити на такі: ( ) ( ) ( )1 , .j i i j i x d x i V G   −   (3) Задача (1), (3) містить ( )V G булевих змінних та ( )V G обмежень у формі лінійних нерівностей. Тут граф G представлено у формі ( ( ), ( ))G V G G=  , де  ( ) ( ), 1, ,G i i n =  = , а ( )i – кінцеві вершини тих дуг, у яких початковою є вершина i , яка має ступінь ( )id i=  . Обмеження (3) означають, що коли вершина належить незалежній множині вершин графа G , то жодна суміжна з нею вершина не може належати цій незалежній множині. В задачах (1), (3) кількість лінійних обмежень буде значно меншою, ніж у задачі (1), (2), для графів з великою кількістю ребер. Число незалежності ( )G визначається однозначно, але йому може відповідати багато максимальних не- залежних множин графа G . Так, наприклад, граф 6W (має форму колеса на основі 5C , циклу з п’яти вершин), множину ребер та матрицю суміжності якого наведено на рис. 1, містить п'ять незалежних множин розміру 6( ) 2W = . На рис. 1 наведено ці множини:  1 1,3S = ,  2 1,4S = ,  3 2,4S = ,  4 2,5S = ,  5 3,5S = . Вершини, які входять в них, позначено чорним кольором. (3) Задача (1), (3) містить Методи і засоби програмної інженерії – уточнити постановки задачі про максимальну незалежну множину, подані в [3], і надати більш ефе- ктивні коди мовою AMPL для знаходження усіх максимальних незалежних множин і максимальної суми неза- лежних множин вершин неорієнтованого графа. 1. Булеві задачі для знаходження числа незалежності та їх властивості Множину вершин графа G називають незалежною, якщо ніякі дві вершини цієї множини не є суміжни- ми (не з'єднані ребром). Індукований цією множиною підграф складається з ізольованих вершин, їх кількість визначає розмір незалежної множини вершин графа. Оптимізаційна задача про максимальну незалежну множи- ну формулюється таким чином: у заданому неорієнтованому графі G без петель потрібно знайти незалежну множину максимального розміру. Цей розмір називають числом незалежності або числом внутрішньої стійкості і позначають ( )G . Задача знаходження числа незалежності ( )G належить до класу NP-повних задач [4, 5]. Задача про максимальну незалежну множину тісно пов'язана з задачею знаходження хроматичного числа ( )G – найменшої кількості різних кольорів, якими можна розфарбувати вершини графа G таким чином, щоб ніякі дві суміжні вершини не були розфарбовані однаково. В.Г. Візинг та Г.С. Плесневич встановили [6], що задачу знаходження хроматичного числа можна звести до ітеративної послідовності задач знаходження числа незалежності графів, отриманих як декартів добуток повних графів та копій графа G . Нехай  0,1ix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в незалеж- ну множину вершин графа ( ( ), ( ))G V G E G= , і нулю – в протилежному випадку. Тут ( )V G – множина вершин графа G , ( )E G – множина його ребер. Щоб знайти число незалежності ( )G , достатньо знайти один із розв'яз- ків задачі булевого лінійного програмуваннях [7]:  0,1 ( ) ( ) max i ix i V G G x   =  (1) за обмежень 1, ( , ) ( ).i jx x i j E G+   (2) Задача (1), (2) містить ( )V G булевих змінних та ( )E G обмежень у формі лінійних нерівностей. Обмеження (2) означають, що коли у графі G вершини i та j з'єднані ребром, то тільки одна з них буде належати неза- лежній множині вершин графа G . Задача (1), (2) може бути переформульована у вигляді задачі булевого лінійного програмування, яка ви- користовується для опису максимального k-плексу [8]. Для цього достатньо обмеження (2) замінити на такі: ( ) ( ) ( )1 , .j i i j i x d x i V G   −   (3) Задача (1), (3) містить ( )V G булевих змінних та ( )V G обмежень у формі лінійних нерівностей. Тут граф G представлено у формі ( ( ), ( ))G V G G=  , де  ( ) ( ), 1, ,G i i n =  = , а ( )i – кінцеві вершини тих дуг, у яких початковою є вершина i , яка має ступінь ( )id i=  . Обмеження (3) означають, що коли вершина належить незалежній множині вершин графа G , то жодна суміжна з нею вершина не може належати цій незалежній множині. В задачах (1), (3) кількість лінійних обмежень буде значно меншою, ніж у задачі (1), (2), для графів з великою кількістю ребер. Число незалежності ( )G визначається однозначно, але йому може відповідати багато максимальних не- залежних множин графа G . Так, наприклад, граф 6W (має форму колеса на основі 5C , циклу з п’яти вершин), множину ребер та матрицю суміжності якого наведено на рис. 1, містить п'ять незалежних множин розміру 6( ) 2W = . На рис. 1 наведено ці множини:  1 1,3S = ,  2 1,4S = ,  3 2,4S = ,  4 2,5S = ,  5 3,5S = . Вершини, які входять в них, позначено чорним кольором. булевих змінних та Методи і засоби програмної інженерії – уточнити постановки задачі про максимальну незалежну множину, подані в [3], і надати більш ефе- ктивні коди мовою AMPL для знаходження усіх максимальних незалежних множин і максимальної суми неза- лежних множин вершин неорієнтованого графа. 1. Булеві задачі для знаходження числа незалежності та їх властивості Множину вершин графа G називають незалежною, якщо ніякі дві вершини цієї множини не є суміжни- ми (не з'єднані ребром). Індукований цією множиною підграф складається з ізольованих вершин, їх кількість визначає розмір незалежної множини вершин графа. Оптимізаційна задача про максимальну незалежну множи- ну формулюється таким чином: у заданому неорієнтованому графі G без петель потрібно знайти незалежну множину максимального розміру. Цей розмір називають числом незалежності або числом внутрішньої стійкості і позначають ( )G . Задача знаходження числа незалежності ( )G належить до класу NP-повних задач [4, 5]. Задача про максимальну незалежну множину тісно пов'язана з задачею знаходження хроматичного числа ( )G – найменшої кількості різних кольорів, якими можна розфарбувати вершини графа G таким чином, щоб ніякі дві суміжні вершини не були розфарбовані однаково. В.Г. Візинг та Г.С. Плесневич встановили [6], що задачу знаходження хроматичного числа можна звести до ітеративної послідовності задач знаходження числа незалежності графів, отриманих як декартів добуток повних графів та копій графа G . Нехай  0,1ix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в незалеж- ну множину вершин графа ( ( ), ( ))G V G E G= , і нулю – в протилежному випадку. Тут ( )V G – множина вершин графа G , ( )E G – множина його ребер. Щоб знайти число незалежності ( )G , достатньо знайти один із розв'яз- ків задачі булевого лінійного програмуваннях [7]:  0,1 ( ) ( ) max i ix i V G G x   =  (1) за обмежень 1, ( , ) ( ).i jx x i j E G+   (2) Задача (1), (2) містить ( )V G булевих змінних та ( )E G обмежень у формі лінійних нерівностей. Обмеження (2) означають, що коли у графі G вершини i та j з'єднані ребром, то тільки одна з них буде належати неза- лежній множині вершин графа G . Задача (1), (2) може бути переформульована у вигляді задачі булевого лінійного програмування, яка ви- користовується для опису максимального k-плексу [8]. Для цього достатньо обмеження (2) замінити на такі: ( ) ( ) ( )1 , .j i i j i x d x i V G   −   (3) Задача (1), (3) містить ( )V G булевих змінних та ( )V G обмежень у формі лінійних нерівностей. Тут граф G представлено у формі ( ( ), ( ))G V G G=  , де  ( ) ( ), 1, ,G i i n =  = , а ( )i – кінцеві вершини тих дуг, у яких початковою є вершина i , яка має ступінь ( )id i=  . Обмеження (3) означають, що коли вершина належить незалежній множині вершин графа G , то жодна суміжна з нею вершина не може належати цій незалежній множині. В задачах (1), (3) кількість лінійних обмежень буде значно меншою, ніж у задачі (1), (2), для графів з великою кількістю ребер. Число незалежності ( )G визначається однозначно, але йому може відповідати багато максимальних не- залежних множин графа G . Так, наприклад, граф 6W (має форму колеса на основі 5C , циклу з п’яти вершин), множину ребер та матрицю суміжності якого наведено на рис. 1, містить п'ять незалежних множин розміру 6( ) 2W = . На рис. 1 наведено ці множини:  1 1,3S = ,  2 1,4S = ,  3 2,4S = ,  4 2,5S = ,  5 3,5S = . Вершини, які входять в них, позначено чорним кольором. обмежень у формі лінійних нерівностей. Тут граф G представлено у формі Методи і засоби програмної інженерії – уточнити постановки задачі про максимальну незалежну множину, подані в [3], і надати більш ефе- ктивні коди мовою AMPL для знаходження усіх максимальних незалежних множин і максимальної суми неза- лежних множин вершин неорієнтованого графа. 1. Булеві задачі для знаходження числа незалежності та їх властивості Множину вершин графа G називають незалежною, якщо ніякі дві вершини цієї множини не є суміжни- ми (не з'єднані ребром). Індукований цією множиною підграф складається з ізольованих вершин, їх кількість визначає розмір незалежної множини вершин графа. Оптимізаційна задача про максимальну незалежну множи- ну формулюється таким чином: у заданому неорієнтованому графі G без петель потрібно знайти незалежну множину максимального розміру. Цей розмір називають числом незалежності або числом внутрішньої стійкості і позначають ( )G . Задача знаходження числа незалежності ( )G належить до класу NP-повних задач [4, 5]. Задача про максимальну незалежну множину тісно пов'язана з задачею знаходження хроматичного числа ( )G – найменшої кількості різних кольорів, якими можна розфарбувати вершини графа G таким чином, щоб ніякі дві суміжні вершини не були розфарбовані однаково. В.Г. Візинг та Г.С. Плесневич встановили [6], що задачу знаходження хроматичного числа можна звести до ітеративної послідовності задач знаходження числа незалежності графів, отриманих як декартів добуток повних графів та копій графа G . Нехай  0,1ix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в незалеж- ну множину вершин графа ( ( ), ( ))G V G E G= , і нулю – в протилежному випадку. Тут ( )V G – множина вершин графа G , ( )E G – множина його ребер. Щоб знайти число незалежності ( )G , достатньо знайти один із розв'яз- ків задачі булевого лінійного програмуваннях [7]:  0,1 ( ) ( ) max i ix i V G G x   =  (1) за обмежень 1, ( , ) ( ).i jx x i j E G+   (2) Задача (1), (2) містить ( )V G булевих змінних та ( )E G обмежень у формі лінійних нерівностей. Обмеження (2) означають, що коли у графі G вершини i та j з'єднані ребром, то тільки одна з них буде належати неза- лежній множині вершин графа G . Задача (1), (2) може бути переформульована у вигляді задачі булевого лінійного програмування, яка ви- користовується для опису максимального k-плексу [8]. Для цього достатньо обмеження (2) замінити на такі: ( ) ( ) ( )1 , .j i i j i x d x i V G   −   (3) Задача (1), (3) містить ( )V G булевих змінних та ( )V G обмежень у формі лінійних нерівностей. Тут граф G представлено у формі ( ( ), ( ))G V G G=  , де  ( ) ( ), 1, ,G i i n =  = , а ( )i – кінцеві вершини тих дуг, у яких початковою є вершина i , яка має ступінь ( )id i=  . Обмеження (3) означають, що коли вершина належить незалежній множині вершин графа G , то жодна суміжна з нею вершина не може належати цій незалежній множині. В задачах (1), (3) кількість лінійних обмежень буде значно меншою, ніж у задачі (1), (2), для графів з великою кількістю ребер. Число незалежності ( )G визначається однозначно, але йому може відповідати багато максимальних не- залежних множин графа G . Так, наприклад, граф 6W (має форму колеса на основі 5C , циклу з п’яти вершин), множину ребер та матрицю суміжності якого наведено на рис. 1, містить п'ять незалежних множин розміру 6( ) 2W = . На рис. 1 наведено ці множини:  1 1,3S = ,  2 1,4S = ,  3 2,4S = ,  4 2,5S = ,  5 3,5S = . Вершини, які входять в них, позначено чорним кольором. – кінцеві вершини тих дуг, у яких початковою є вершина i, яка має ступінь Методи і засоби програмної інженерії – уточнити постановки задачі про максимальну незалежну множину, подані в [3], і надати більш ефе- ктивні коди мовою AMPL для знаходження усіх максимальних незалежних множин і максимальної суми неза- лежних множин вершин неорієнтованого графа. 1. Булеві задачі для знаходження числа незалежності та їх властивості Множину вершин графа G називають незалежною, якщо ніякі дві вершини цієї множини не є суміжни- ми (не з'єднані ребром). Індукований цією множиною підграф складається з ізольованих вершин, їх кількість визначає розмір незалежної множини вершин графа. Оптимізаційна задача про максимальну незалежну множи- ну формулюється таким чином: у заданому неорієнтованому графі G без петель потрібно знайти незалежну множину максимального розміру. Цей розмір називають числом незалежності або числом внутрішньої стійкості і позначають ( )G . Задача знаходження числа незалежності ( )G належить до класу NP-повних задач [4, 5]. Задача про максимальну незалежну множину тісно пов'язана з задачею знаходження хроматичного числа ( )G – найменшої кількості різних кольорів, якими можна розфарбувати вершини графа G таким чином, щоб ніякі дві суміжні вершини не були розфарбовані однаково. В.Г. Візинг та Г.С. Плесневич встановили [6], що задачу знаходження хроматичного числа можна звести до ітеративної послідовності задач знаходження числа незалежності графів, отриманих як декартів добуток повних графів та копій графа G . Нехай  0,1ix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в незалеж- ну множину вершин графа ( ( ), ( ))G V G E G= , і нулю – в протилежному випадку. Тут ( )V G – множина вершин графа G , ( )E G – множина його ребер. Щоб знайти число незалежності ( )G , достатньо знайти один із розв'яз- ків задачі булевого лінійного програмуваннях [7]:  0,1 ( ) ( ) max i ix i V G G x   =  (1) за обмежень 1, ( , ) ( ).i jx x i j E G+   (2) Задача (1), (2) містить ( )V G булевих змінних та ( )E G обмежень у формі лінійних нерівностей. Обмеження (2) означають, що коли у графі G вершини i та j з'єднані ребром, то тільки одна з них буде належати неза- лежній множині вершин графа G . Задача (1), (2) може бути переформульована у вигляді задачі булевого лінійного програмування, яка ви- користовується для опису максимального k-плексу [8]. Для цього достатньо обмеження (2) замінити на такі: ( ) ( ) ( )1 , .j i i j i x d x i V G   −   (3) Задача (1), (3) містить ( )V G булевих змінних та ( )V G обмежень у формі лінійних нерівностей. Тут граф G представлено у формі ( ( ), ( ))G V G G=  , де  ( ) ( ), 1, ,G i i n =  = , а ( )i – кінцеві вершини тих дуг, у яких початковою є вершина i , яка має ступінь ( )id i=  . Обмеження (3) означають, що коли вершина належить незалежній множині вершин графа G , то жодна суміжна з нею вершина не може належати цій незалежній множині. В задачах (1), (3) кількість лінійних обмежень буде значно меншою, ніж у задачі (1), (2), для графів з великою кількістю ребер. Число незалежності ( )G визначається однозначно, але йому може відповідати багато максимальних не- залежних множин графа G . Так, наприклад, граф 6W (має форму колеса на основі 5C , циклу з п’яти вершин), множину ребер та матрицю суміжності якого наведено на рис. 1, містить п'ять незалежних множин розміру 6( ) 2W = . На рис. 1 наведено ці множини:  1 1,3S = ,  2 1,4S = ,  3 2,4S = ,  4 2,5S = ,  5 3,5S = . Вершини, які входять в них, позначено чорним кольором. Обмеження (3) означають, що коли вершина належить незалежній множині вершин графа G, то жодна суміжна з нею вершина не може належати цій незалежній множині. В задачах (1), (3) кількість лінійних обмежень буде значно меншою, ніж у задачі (1), (2), для графів з великою кількістю ребер. Число незалежності Методи і засоби програмної інженерії – уточнити постановки задачі про максимальну незалежну множину, подані в [3], і надати більш ефе- ктивні коди мовою AMPL для знаходження усіх максимальних незалежних множин і максимальної суми неза- лежних множин вершин неорієнтованого графа. 1. Булеві задачі для знаходження числа незалежності та їх властивості Множину вершин графа G називають незалежною, якщо ніякі дві вершини цієї множини не є суміжни- ми (не з'єднані ребром). Індукований цією множиною підграф складається з ізольованих вершин, їх кількість визначає розмір незалежної множини вершин графа. Оптимізаційна задача про максимальну незалежну множи- ну формулюється таким чином: у заданому неорієнтованому графі G без петель потрібно знайти незалежну множину максимального розміру. Цей розмір називають числом незалежності або числом внутрішньої стійкості і позначають ( )G . Задача знаходження числа незалежності ( )G належить до класу NP-повних задач [4, 5]. Задача про максимальну незалежну множину тісно пов'язана з задачею знаходження хроматичного числа ( )G – найменшої кількості різних кольорів, якими можна розфарбувати вершини графа G таким чином, щоб ніякі дві суміжні вершини не були розфарбовані однаково. В.Г. Візинг та Г.С. Плесневич встановили [6], що задачу знаходження хроматичного числа можна звести до ітеративної послідовності задач знаходження числа незалежності графів, отриманих як декартів добуток повних графів та копій графа G . Нехай  0,1ix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в незалеж- ну множину вершин графа ( ( ), ( ))G V G E G= , і нулю – в протилежному випадку. Тут ( )V G – множина вершин графа G , ( )E G – множина його ребер. Щоб знайти число незалежності ( )G , достатньо знайти один із розв'яз- ків задачі булевого лінійного програмуваннях [7]:  0,1 ( ) ( ) max i ix i V G G x   =  (1) за обмежень 1, ( , ) ( ).i jx x i j E G+   (2) Задача (1), (2) містить ( )V G булевих змінних та ( )E G обмежень у формі лінійних нерівностей. Обмеження (2) означають, що коли у графі G вершини i та j з'єднані ребром, то тільки одна з них буде належати неза- лежній множині вершин графа G . Задача (1), (2) може бути переформульована у вигляді задачі булевого лінійного програмування, яка ви- користовується для опису максимального k-плексу [8]. Для цього достатньо обмеження (2) замінити на такі: ( ) ( ) ( )1 , .j i i j i x d x i V G   −   (3) Задача (1), (3) містить ( )V G булевих змінних та ( )V G обмежень у формі лінійних нерівностей. Тут граф G представлено у формі ( ( ), ( ))G V G G=  , де  ( ) ( ), 1, ,G i i n =  = , а ( )i – кінцеві вершини тих дуг, у яких початковою є вершина i , яка має ступінь ( )id i=  . Обмеження (3) означають, що коли вершина належить незалежній множині вершин графа G , то жодна суміжна з нею вершина не може належати цій незалежній множині. В задачах (1), (3) кількість лінійних обмежень буде значно меншою, ніж у задачі (1), (2), для графів з великою кількістю ребер. Число незалежності ( )G визначається однозначно, але йому може відповідати багато максимальних не- залежних множин графа G . Так, наприклад, граф 6W (має форму колеса на основі 5C , циклу з п’яти вершин), множину ребер та матрицю суміжності якого наведено на рис. 1, містить п'ять незалежних множин розміру 6( ) 2W = . На рис. 1 наведено ці множини:  1 1,3S = ,  2 1,4S = ,  3 2,4S = ,  4 2,5S = ,  5 3,5S = . Вершини, які входять в них, позначено чорним кольором. визначається однозначно, але йому може відповідати багато максимальних незалежних множин графа G. Так, наприклад, граф Методи і засоби програмної інженерії – уточнити постановки задачі про максимальну незалежну множину, подані в [3], і надати більш ефе- ктивні коди мовою AMPL для знаходження усіх максимальних незалежних множин і максимальної суми неза- лежних множин вершин неорієнтованого графа. 1. Булеві задачі для знаходження числа незалежності та їх властивості Множину вершин графа G називають незалежною, якщо ніякі дві вершини цієї множини не є суміжни- ми (не з'єднані ребром). Індукований цією множиною підграф складається з ізольованих вершин, їх кількість визначає розмір незалежної множини вершин графа. Оптимізаційна задача про максимальну незалежну множи- ну формулюється таким чином: у заданому неорієнтованому графі G без петель потрібно знайти незалежну множину максимального розміру. Цей розмір називають числом незалежності або числом внутрішньої стійкості і позначають ( )G . Задача знаходження числа незалежності ( )G належить до класу NP-повних задач [4, 5]. Задача про максимальну незалежну множину тісно пов'язана з задачею знаходження хроматичного числа ( )G – найменшої кількості різних кольорів, якими можна розфарбувати вершини графа G таким чином, щоб ніякі дві суміжні вершини не були розфарбовані однаково. В.Г. Візинг та Г.С. Плесневич встановили [6], що задачу знаходження хроматичного числа можна звести до ітеративної послідовності задач знаходження числа незалежності графів, отриманих як декартів добуток повних графів та копій графа G . Нехай  0,1ix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в незалеж- ну множину вершин графа ( ( ), ( ))G V G E G= , і нулю – в протилежному випадку. Тут ( )V G – множина вершин графа G , ( )E G – множина його ребер. Щоб знайти число незалежності ( )G , достатньо знайти один із розв'яз- ків задачі булевого лінійного програмуваннях [7]:  0,1 ( ) ( ) max i ix i V G G x   =  (1) за обмежень 1, ( , ) ( ).i jx x i j E G+   (2) Задача (1), (2) містить ( )V G булевих змінних та ( )E G обмежень у формі лінійних нерівностей. Обмеження (2) означають, що коли у графі G вершини i та j з'єднані ребром, то тільки одна з них буде належати неза- лежній множині вершин графа G . Задача (1), (2) може бути переформульована у вигляді задачі булевого лінійного програмування, яка ви- користовується для опису максимального k-плексу [8]. Для цього достатньо обмеження (2) замінити на такі: ( ) ( ) ( )1 , .j i i j i x d x i V G   −   (3) Задача (1), (3) містить ( )V G булевих змінних та ( )V G обмежень у формі лінійних нерівностей. Тут граф G представлено у формі ( ( ), ( ))G V G G=  , де  ( ) ( ), 1, ,G i i n =  = , а ( )i – кінцеві вершини тих дуг, у яких початковою є вершина i , яка має ступінь ( )id i=  . Обмеження (3) означають, що коли вершина належить незалежній множині вершин графа G , то жодна суміжна з нею вершина не може належати цій незалежній множині. В задачах (1), (3) кількість лінійних обмежень буде значно меншою, ніж у задачі (1), (2), для графів з великою кількістю ребер. Число незалежності ( )G визначається однозначно, але йому може відповідати багато максимальних не- залежних множин графа G . Так, наприклад, граф 6W (має форму колеса на основі 5C , циклу з п’яти вершин), множину ребер та матрицю суміжності якого наведено на рис. 1, містить п'ять незалежних множин розміру 6( ) 2W = . На рис. 1 наведено ці множини:  1 1,3S = ,  2 1,4S = ,  3 2,4S = ,  4 2,5S = ,  5 3,5S = . Вершини, які входять в них, позначено чорним кольором. (має форму колеса на основі Методи і засоби програмної інженерії – уточнити постановки задачі про максимальну незалежну множину, подані в [3], і надати більш ефе- ктивні коди мовою AMPL для знаходження усіх максимальних незалежних множин і максимальної суми неза- лежних множин вершин неорієнтованого графа. 1. Булеві задачі для знаходження числа незалежності та їх властивості Множину вершин графа G називають незалежною, якщо ніякі дві вершини цієї множини не є суміжни- ми (не з'єднані ребром). Індукований цією множиною підграф складається з ізольованих вершин, їх кількість визначає розмір незалежної множини вершин графа. Оптимізаційна задача про максимальну незалежну множи- ну формулюється таким чином: у заданому неорієнтованому графі G без петель потрібно знайти незалежну множину максимального розміру. Цей розмір називають числом незалежності або числом внутрішньої стійкості і позначають ( )G . Задача знаходження числа незалежності ( )G належить до класу NP-повних задач [4, 5]. Задача про максимальну незалежну множину тісно пов'язана з задачею знаходження хроматичного числа ( )G – найменшої кількості різних кольорів, якими можна розфарбувати вершини графа G таким чином, щоб ніякі дві суміжні вершини не були розфарбовані однаково. В.Г. Візинг та Г.С. Плесневич встановили [6], що задачу знаходження хроматичного числа можна звести до ітеративної послідовності задач знаходження числа незалежності графів, отриманих як декартів добуток повних графів та копій графа G . Нехай  0,1ix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в незалеж- ну множину вершин графа ( ( ), ( ))G V G E G= , і нулю – в протилежному випадку. Тут ( )V G – множина вершин графа G , ( )E G – множина його ребер. Щоб знайти число незалежності ( )G , достатньо знайти один із розв'яз- ків задачі булевого лінійного програмуваннях [7]:  0,1 ( ) ( ) max i ix i V G G x   =  (1) за обмежень 1, ( , ) ( ).i jx x i j E G+   (2) Задача (1), (2) містить ( )V G булевих змінних та ( )E G обмежень у формі лінійних нерівностей. Обмеження (2) означають, що коли у графі G вершини i та j з'єднані ребром, то тільки одна з них буде належати неза- лежній множині вершин графа G . Задача (1), (2) може бути переформульована у вигляді задачі булевого лінійного програмування, яка ви- користовується для опису максимального k-плексу [8]. Для цього достатньо обмеження (2) замінити на такі: ( ) ( ) ( )1 , .j i i j i x d x i V G   −   (3) Задача (1), (3) містить ( )V G булевих змінних та ( )V G обмежень у формі лінійних нерівностей. Тут граф G представлено у формі ( ( ), ( ))G V G G=  , де  ( ) ( ), 1, ,G i i n =  = , а ( )i – кінцеві вершини тих дуг, у яких початковою є вершина i , яка має ступінь ( )id i=  . Обмеження (3) означають, що коли вершина належить незалежній множині вершин графа G , то жодна суміжна з нею вершина не може належати цій незалежній множині. В задачах (1), (3) кількість лінійних обмежень буде значно меншою, ніж у задачі (1), (2), для графів з великою кількістю ребер. Число незалежності ( )G визначається однозначно, але йому може відповідати багато максимальних не- залежних множин графа G . Так, наприклад, граф 6W (має форму колеса на основі 5C , циклу з п’яти вершин), множину ребер та матрицю суміжності якого наведено на рис. 1, містить п'ять незалежних множин розміру 6( ) 2W = . На рис. 1 наведено ці множини:  1 1,3S = ,  2 1,4S = ,  3 2,4S = ,  4 2,5S = ,  5 3,5S = . Вершини, які входять в них, позначено чорним кольором. , циклу з п’яти вершин), множину ребер та матрицю суміжності якого наведено на рис. 1, містить п’ять незалежних множин розміру Методи і засоби програмної інженерії – уточнити постановки задачі про максимальну незалежну множину, подані в [3], і надати більш ефе- ктивні коди мовою AMPL для знаходження усіх максимальних незалежних множин і максимальної суми неза- лежних множин вершин неорієнтованого графа. 1. Булеві задачі для знаходження числа незалежності та їх властивості Множину вершин графа G називають незалежною, якщо ніякі дві вершини цієї множини не є суміжни- ми (не з'єднані ребром). Індукований цією множиною підграф складається з ізольованих вершин, їх кількість визначає розмір незалежної множини вершин графа. Оптимізаційна задача про максимальну незалежну множи- ну формулюється таким чином: у заданому неорієнтованому графі G без петель потрібно знайти незалежну множину максимального розміру. Цей розмір називають числом незалежності або числом внутрішньої стійкості і позначають ( )G . Задача знаходження числа незалежності ( )G належить до класу NP-повних задач [4, 5]. Задача про максимальну незалежну множину тісно пов'язана з задачею знаходження хроматичного числа ( )G – найменшої кількості різних кольорів, якими можна розфарбувати вершини графа G таким чином, щоб ніякі дві суміжні вершини не були розфарбовані однаково. В.Г. Візинг та Г.С. Плесневич встановили [6], що задачу знаходження хроматичного числа можна звести до ітеративної послідовності задач знаходження числа незалежності графів, отриманих як декартів добуток повних графів та копій графа G . Нехай  0,1ix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в незалеж- ну множину вершин графа ( ( ), ( ))G V G E G= , і нулю – в протилежному випадку. Тут ( )V G – множина вершин графа G , ( )E G – множина його ребер. Щоб знайти число незалежності ( )G , достатньо знайти один із розв'яз- ків задачі булевого лінійного програмуваннях [7]:  0,1 ( ) ( ) max i ix i V G G x   =  (1) за обмежень 1, ( , ) ( ).i jx x i j E G+   (2) Задача (1), (2) містить ( )V G булевих змінних та ( )E G обмежень у формі лінійних нерівностей. Обмеження (2) означають, що коли у графі G вершини i та j з'єднані ребром, то тільки одна з них буде належати неза- лежній множині вершин графа G . Задача (1), (2) може бути переформульована у вигляді задачі булевого лінійного програмування, яка ви- користовується для опису максимального k-плексу [8]. Для цього достатньо обмеження (2) замінити на такі: ( ) ( ) ( )1 , .j i i j i x d x i V G   −   (3) Задача (1), (3) містить ( )V G булевих змінних та ( )V G обмежень у формі лінійних нерівностей. Тут граф G представлено у формі ( ( ), ( ))G V G G=  , де  ( ) ( ), 1, ,G i i n =  = , а ( )i – кінцеві вершини тих дуг, у яких початковою є вершина i , яка має ступінь ( )id i=  . Обмеження (3) означають, що коли вершина належить незалежній множині вершин графа G , то жодна суміжна з нею вершина не може належати цій незалежній множині. В задачах (1), (3) кількість лінійних обмежень буде значно меншою, ніж у задачі (1), (2), для графів з великою кількістю ребер. Число незалежності ( )G визначається однозначно, але йому може відповідати багато максимальних не- залежних множин графа G . Так, наприклад, граф 6W (має форму колеса на основі 5C , циклу з п’яти вершин), множину ребер та матрицю суміжності якого наведено на рис. 1, містить п'ять незалежних множин розміру 6( ) 2W = . На рис. 1 наведено ці множини:  1 1,3S = ,  2 1,4S = ,  3 2,4S = ,  4 2,5S = ,  5 3,5S = . Вершини, які входять в них, позначено чорним кольором. . На рис. 1 наведено ці множини: Методи і засоби програмної інженерії – уточнити постановки задачі про максимальну незалежну множину, подані в [3], і надати більш ефе- ктивні коди мовою AMPL для знаходження усіх максимальних незалежних множин і максимальної суми неза- лежних множин вершин неорієнтованого графа. 1. Булеві задачі для знаходження числа незалежності та їх властивості Множину вершин графа G називають незалежною, якщо ніякі дві вершини цієї множини не є суміжни- ми (не з'єднані ребром). Індукований цією множиною підграф складається з ізольованих вершин, їх кількість визначає розмір незалежної множини вершин графа. Оптимізаційна задача про максимальну незалежну множи- ну формулюється таким чином: у заданому неорієнтованому графі G без петель потрібно знайти незалежну множину максимального розміру. Цей розмір називають числом незалежності або числом внутрішньої стійкості і позначають ( )G . Задача знаходження числа незалежності ( )G належить до класу NP-повних задач [4, 5]. Задача про максимальну незалежну множину тісно пов'язана з задачею знаходження хроматичного числа ( )G – найменшої кількості різних кольорів, якими можна розфарбувати вершини графа G таким чином, щоб ніякі дві суміжні вершини не були розфарбовані однаково. В.Г. Візинг та Г.С. Плесневич встановили [6], що задачу знаходження хроматичного числа можна звести до ітеративної послідовності задач знаходження числа незалежності графів, отриманих як декартів добуток повних графів та копій графа G . Нехай  0,1ix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в незалеж- ну множину вершин графа ( ( ), ( ))G V G E G= , і нулю – в протилежному випадку. Тут ( )V G – множина вершин графа G , ( )E G – множина його ребер. Щоб знайти число незалежності ( )G , достатньо знайти один із розв'яз- ків задачі булевого лінійного програмуваннях [7]:  0,1 ( ) ( ) max i ix i V G G x   =  (1) за обмежень 1, ( , ) ( ).i jx x i j E G+   (2) Задача (1), (2) містить ( )V G булевих змінних та ( )E G обмежень у формі лінійних нерівностей. Обмеження (2) означають, що коли у графі G вершини i та j з'єднані ребром, то тільки одна з них буде належати неза- лежній множині вершин графа G . Задача (1), (2) може бути переформульована у вигляді задачі булевого лінійного програмування, яка ви- користовується для опису максимального k-плексу [8]. Для цього достатньо обмеження (2) замінити на такі: ( ) ( ) ( )1 , .j i i j i x d x i V G   −   (3) Задача (1), (3) містить ( )V G булевих змінних та ( )V G обмежень у формі лінійних нерівностей. Тут граф G представлено у формі ( ( ), ( ))G V G G=  , де  ( ) ( ), 1, ,G i i n =  = , а ( )i – кінцеві вершини тих дуг, у яких початковою є вершина i , яка має ступінь ( )id i=  . Обмеження (3) означають, що коли вершина належить незалежній множині вершин графа G , то жодна суміжна з нею вершина не може належати цій незалежній множині. В задачах (1), (3) кількість лінійних обмежень буде значно меншою, ніж у задачі (1), (2), для графів з великою кількістю ребер. Число незалежності ( )G визначається однозначно, але йому може відповідати багато максимальних не- залежних множин графа G . Так, наприклад, граф 6W (має форму колеса на основі 5C , циклу з п’яти вершин), множину ребер та матрицю суміжності якого наведено на рис. 1, містить п'ять незалежних множин розміру 6( ) 2W = . На рис. 1 наведено ці множини:  1 1,3S = ,  2 1,4S = ,  3 2,4S = ,  4 2,5S = ,  5 3,5S = . Вершини, які входять в них, позначено чорним кольором. Вершини, які входять в них, позначено чорним кольором. [Введите текст] Методи і засоби програмної інженерії [Введите текст] Риcунок 1. Граф 6W та його п'ять незалежних множин максимального розміру   ( ) 0,1 ( ) ( ) max i i i ix i V G G x x    = + , (4) де випадкові величини i << 1 для всіх ( )i V G . Залежно від вибраних значень для збурень i , 1, , ( )i V G= , як розв'язок задачі (4), (2) або задачі (4), (3) отримаємо ту чи іншу незалежну множину розміру ( )G . Цей спосіб вимагає значної кількості розв'язань задачі (4), (2) або задачі (4), (3), що підтверджують ре- зультати обчислювального експерименту для знаходження незалежних множин 1 5, ,S S у графі 6W за допо- могою солвера gurobi [9]. Результати експерименту наведені у табл. 1: правила генерації випадкових збурень (колонка 1) та частота знаходження кожної з п'яти незалежних множин з рис. 1 (колонки 3–7 отримані за допо- могою розв’язання задачі (4), (2), колонки 8–12 отримані за допомогою розв’язання задачі (4), (3)) для різних кількостей запусків солвера gurobi: 10nCalls = , 100nCalls = і 1000nCalls = (колонка 2). Таблиця 1 – Частота знаходження максимальних незалежних множин 1 5, ,S S для графа 6W за рівномірного та нормального розподілів випадкових збурень i , 1,...,6i = Для булевої задачі (4), (2) Для булевої задачі (4), (3) , 1,...,6i i = nCalls ( )1n S ( )2n S ( )3n S ( )4n S ( )5n S ( )1n S ( )2n S ( )3n S ( )4n S ( )5n S 0.001  Uniform(-1,1) 10 3 2 1 1 3 3 2 1 1 3 100 19 22 24 15 20 19 22 24 15 20 1000 199 204 218 180 199 199 204 218 180 199 0.001  Normal(-1,1) 10 1 2 0 3 4 1 2 0 3 4 100 20 17 20 19 24 20 17 20 19 24 1000 197 193 206 200 204 197 193 206 200 204 Розрахунки для табл. 1 проводилися програмою-солвером gurobi 2.0.1 студентської версії AMPL [10, 11]. Частоти знаходження множин 1 5, ,S S для булевої задачі (4), (2) обчислювались за допомогою AMPL-коду: # Подання графу G для булевої задачі (4),(2) set V_G := {1,2,3,4,5,6}; # вершини графа set E_G:={(1,2),(1,5),(1,6),(2,3),(2,6),(3,4),(3,6),(4,5),(4,6),(5,6)}; # ребра графа display V_G,E_G; # Опис та задання параметрів param nCalls:=100; #кількість запусків солвера param ns{i in 1..5} default 0; #кількості множин S_i param nv := card(V_G); param eps{i in 1..nv} default 0; # Опис булевої задачі (4), (2) var xs{i in 1..nv} binary; maximize alpha_G: sum{i in 1..nv} (xs[i]+eps[i]*xs[i]); subject to constr2 {(i,j) in E_G}: xs[i]+xs[j] <= 1; option solver gurobi; # вибір солвера # nCalls разів розв’язуємо задачу (4), (2) Риcунок 1. Граф Методи і засоби програмної інженерії – уточнити постановки задачі про максимальну незалежну множину, подані в [3], і надати більш ефе- ктивні коди мовою AMPL для знаходження усіх максимальних незалежних множин і максимальної суми неза- лежних множин вершин неорієнтованого графа. 1. Булеві задачі для знаходження числа незалежності та їх властивості Множину вершин графа G називають незалежною, якщо ніякі дві вершини цієї множини не є суміжни- ми (не з'єднані ребром). Індукований цією множиною підграф складається з ізольованих вершин, їх кількість визначає розмір незалежної множини вершин графа. Оптимізаційна задача про максимальну незалежну множи- ну формулюється таким чином: у заданому неорієнтованому графі G без петель потрібно знайти незалежну множину максимального розміру. Цей розмір називають числом незалежності або числом внутрішньої стійкості і позначають ( )G . Задача знаходження числа незалежності ( )G належить до класу NP-повних задач [4, 5]. Задача про максимальну незалежну множину тісно пов'язана з задачею знаходження хроматичного числа ( )G – найменшої кількості різних кольорів, якими можна розфарбувати вершини графа G таким чином, щоб ніякі дві суміжні вершини не були розфарбовані однаково. В.Г. Візинг та Г.С. Плесневич встановили [6], що задачу знаходження хроматичного числа можна звести до ітеративної послідовності задач знаходження числа незалежності графів, отриманих як декартів добуток повних графів та копій графа G . Нехай  0,1ix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в незалеж- ну множину вершин графа ( ( ), ( ))G V G E G= , і нулю – в протилежному випадку. Тут ( )V G – множина вершин графа G , ( )E G – множина його ребер. Щоб знайти число незалежності ( )G , достатньо знайти один із розв'яз- ків задачі булевого лінійного програмуваннях [7]:  0,1 ( ) ( ) max i ix i V G G x   =  (1) за обмежень 1, ( , ) ( ).i jx x i j E G+   (2) Задача (1), (2) містить ( )V G булевих змінних та ( )E G обмежень у формі лінійних нерівностей. Обмеження (2) означають, що коли у графі G вершини i та j з'єднані ребром, то тільки одна з них буде належати неза- лежній множині вершин графа G . Задача (1), (2) може бути переформульована у вигляді задачі булевого лінійного програмування, яка ви- користовується для опису максимального k-плексу [8]. Для цього достатньо обмеження (2) замінити на такі: ( ) ( ) ( )1 , .j i i j i x d x i V G   −   (3) Задача (1), (3) містить ( )V G булевих змінних та ( )V G обмежень у формі лінійних нерівностей. Тут граф G представлено у формі ( ( ), ( ))G V G G=  , де  ( ) ( ), 1, ,G i i n =  = , а ( )i – кінцеві вершини тих дуг, у яких початковою є вершина i , яка має ступінь ( )id i=  . Обмеження (3) означають, що коли вершина належить незалежній множині вершин графа G , то жодна суміжна з нею вершина не може належати цій незалежній множині. В задачах (1), (3) кількість лінійних обмежень буде значно меншою, ніж у задачі (1), (2), для графів з великою кількістю ребер. Число незалежності ( )G визначається однозначно, але йому може відповідати багато максимальних не- залежних множин графа G . Так, наприклад, граф 6W (має форму колеса на основі 5C , циклу з п’яти вершин), множину ребер та матрицю суміжності якого наведено на рис. 1, містить п'ять незалежних множин розміру 6( ) 2W = . На рис. 1 наведено ці множини:  1 1,3S = ,  2 1,4S = ,  3 2,4S = ,  4 2,5S = ,  5 3,5S = . Вершини, які входять в них, позначено чорним кольором. та його п’ять незалежних множин максимального розміру 75 Методи і засоби програмної інженерії [Введите текст] Методи і засоби програмної інженерії [Введите текст] Риcунок 1. Граф 6W та його п'ять незалежних множин максимального розміру   ( ) 0,1 ( ) ( ) max i i i ix i V G G x x    = + , (4) де випадкові величини i << 1 для всіх ( )i V G . Залежно від вибраних значень для збурень i , 1, , ( )i V G= , як розв'язок задачі (4), (2) або задачі (4), (3) отримаємо ту чи іншу незалежну множину розміру ( )G . Цей спосіб вимагає значної кількості розв'язань задачі (4), (2) або задачі (4), (3), що підтверджують ре- зультати обчислювального експерименту для знаходження незалежних множин 1 5, ,S S у графі 6W за допо- могою солвера gurobi [9]. Результати експерименту наведені у табл. 1: правила генерації випадкових збурень (колонка 1) та частота знаходження кожної з п'яти незалежних множин з рис. 1 (колонки 3–7 отримані за допо- могою розв’язання задачі (4), (2), колонки 8–12 отримані за допомогою розв’язання задачі (4), (3)) для різних кількостей запусків солвера gurobi: 10nCalls = , 100nCalls = і 1000nCalls = (колонка 2). Таблиця 1 – Частота знаходження максимальних незалежних множин 1 5, ,S S для графа 6W за рівномірного та нормального розподілів випадкових збурень i , 1,...,6i = Для булевої задачі (4), (2) Для булевої задачі (4), (3) , 1,...,6i i = nCalls ( )1n S ( )2n S ( )3n S ( )4n S ( )5n S ( )1n S ( )2n S ( )3n S ( )4n S ( )5n S 0.001  Uniform(-1,1) 10 3 2 1 1 3 3 2 1 1 3 100 19 22 24 15 20 19 22 24 15 20 1000 199 204 218 180 199 199 204 218 180 199 0.001  Normal(-1,1) 10 1 2 0 3 4 1 2 0 3 4 100 20 17 20 19 24 20 17 20 19 24 1000 197 193 206 200 204 197 193 206 200 204 Розрахунки для табл. 1 проводилися програмою-солвером gurobi 2.0.1 студентської версії AMPL [10, 11]. Частоти знаходження множин 1 5, ,S S для булевої задачі (4), (2) обчислювались за допомогою AMPL-коду: # Подання графу G для булевої задачі (4),(2) set V_G := {1,2,3,4,5,6}; # вершини графа set E_G:={(1,2),(1,5),(1,6),(2,3),(2,6),(3,4),(3,6),(4,5),(4,6),(5,6)}; # ребра графа display V_G,E_G; # Опис та задання параметрів param nCalls:=100; #кількість запусків солвера param ns{i in 1..5} default 0; #кількості множин S_i param nv := card(V_G); param eps{i in 1..nv} default 0; # Опис булевої задачі (4), (2) var xs{i in 1..nv} binary; maximize alpha_G: sum{i in 1..nv} (xs[i]+eps[i]*xs[i]); subject to constr2 {(i,j) in E_G}: xs[i]+xs[j] <= 1; option solver gurobi; # вибір солвера # nCalls разів розв’язуємо задачу (4), (2) (4) де випадкові величини [Введите текст] Методи і засоби програмної інженерії [Введите текст] Риcунок 1. Граф 6W та його п'ять незалежних множин максимального розміру   ( ) 0,1 ( ) ( ) max i i i ix i V G G x x    = + , (4) де випадкові величини i << 1 для всіх ( )i V G . Залежно від вибраних значень для збурень i , 1, , ( )i V G= , як розв'язок задачі (4), (2) або задачі (4), (3) отримаємо ту чи іншу незалежну множину розміру ( )G . Цей спосіб вимагає значної кількості розв'язань задачі (4), (2) або задачі (4), (3), що підтверджують ре- зультати обчислювального експерименту для знаходження незалежних множин 1 5, ,S S у графі 6W за допо- могою солвера gurobi [9]. Результати експерименту наведені у табл. 1: правила генерації випадкових збурень (колонка 1) та частота знаходження кожної з п'яти незалежних множин з рис. 1 (колонки 3–7 отримані за допо- могою розв’язання задачі (4), (2), колонки 8–12 отримані за допомогою розв’язання задачі (4), (3)) для різних кількостей запусків солвера gurobi: 10nCalls = , 100nCalls = і 1000nCalls = (колонка 2). Таблиця 1 – Частота знаходження максимальних незалежних множин 1 5, ,S S для графа 6W за рівномірного та нормального розподілів випадкових збурень i , 1,...,6i = Для булевої задачі (4), (2) Для булевої задачі (4), (3) , 1,...,6i i = nCalls ( )1n S ( )2n S ( )3n S ( )4n S ( )5n S ( )1n S ( )2n S ( )3n S ( )4n S ( )5n S 0.001  Uniform(-1,1) 10 3 2 1 1 3 3 2 1 1 3 100 19 22 24 15 20 19 22 24 15 20 1000 199 204 218 180 199 199 204 218 180 199 0.001  Normal(-1,1) 10 1 2 0 3 4 1 2 0 3 4 100 20 17 20 19 24 20 17 20 19 24 1000 197 193 206 200 204 197 193 206 200 204 Розрахунки для табл. 1 проводилися програмою-солвером gurobi 2.0.1 студентської версії AMPL [10, 11]. Частоти знаходження множин 1 5, ,S S для булевої задачі (4), (2) обчислювались за допомогою AMPL-коду: # Подання графу G для булевої задачі (4),(2) set V_G := {1,2,3,4,5,6}; # вершини графа set E_G:={(1,2),(1,5),(1,6),(2,3),(2,6),(3,4),(3,6),(4,5),(4,6),(5,6)}; # ребра графа display V_G,E_G; # Опис та задання параметрів param nCalls:=100; #кількість запусків солвера param ns{i in 1..5} default 0; #кількості множин S_i param nv := card(V_G); param eps{i in 1..nv} default 0; # Опис булевої задачі (4), (2) var xs{i in 1..nv} binary; maximize alpha_G: sum{i in 1..nv} (xs[i]+eps[i]*xs[i]); subject to constr2 {(i,j) in E_G}: xs[i]+xs[j] <= 1; option solver gurobi; # вибір солвера # nCalls разів розв’язуємо задачу (4), (2) для всіх [Введите текст] Методи і засоби програмної інженерії [Введите текст] Риcунок 1. Граф 6W та його п'ять незалежних множин максимального розміру   ( ) 0,1 ( ) ( ) max i i i ix i V G G x x    = + , (4) де випадкові величини i << 1 для всіх ( )i V G . Залежно від вибраних значень для збурень i , 1, , ( )i V G= , як розв'язок задачі (4), (2) або задачі (4), (3) отримаємо ту чи іншу незалежну множину розміру ( )G . Цей спосіб вимагає значної кількості розв'язань задачі (4), (2) або задачі (4), (3), що підтверджують ре- зультати обчислювального експерименту для знаходження незалежних множин 1 5, ,S S у графі 6W за допо- могою солвера gurobi [9]. Результати експерименту наведені у табл. 1: правила генерації випадкових збурень (колонка 1) та частота знаходження кожної з п'яти незалежних множин з рис. 1 (колонки 3–7 отримані за допо- могою розв’язання задачі (4), (2), колонки 8–12 отримані за допомогою розв’язання задачі (4), (3)) для різних кількостей запусків солвера gurobi: 10nCalls = , 100nCalls = і 1000nCalls = (колонка 2). Таблиця 1 – Частота знаходження максимальних незалежних множин 1 5, ,S S для графа 6W за рівномірного та нормального розподілів випадкових збурень i , 1,...,6i = Для булевої задачі (4), (2) Для булевої задачі (4), (3) , 1,...,6i i = nCalls ( )1n S ( )2n S ( )3n S ( )4n S ( )5n S ( )1n S ( )2n S ( )3n S ( )4n S ( )5n S 0.001  Uniform(-1,1) 10 3 2 1 1 3 3 2 1 1 3 100 19 22 24 15 20 19 22 24 15 20 1000 199 204 218 180 199 199 204 218 180 199 0.001  Normal(-1,1) 10 1 2 0 3 4 1 2 0 3 4 100 20 17 20 19 24 20 17 20 19 24 1000 197 193 206 200 204 197 193 206 200 204 Розрахунки для табл. 1 проводилися програмою-солвером gurobi 2.0.1 студентської версії AMPL [10, 11]. Частоти знаходження множин 1 5, ,S S для булевої задачі (4), (2) обчислювались за допомогою AMPL-коду: # Подання графу G для булевої задачі (4),(2) set V_G := {1,2,3,4,5,6}; # вершини графа set E_G:={(1,2),(1,5),(1,6),(2,3),(2,6),(3,4),(3,6),(4,5),(4,6),(5,6)}; # ребра графа display V_G,E_G; # Опис та задання параметрів param nCalls:=100; #кількість запусків солвера param ns{i in 1..5} default 0; #кількості множин S_i param nv := card(V_G); param eps{i in 1..nv} default 0; # Опис булевої задачі (4), (2) var xs{i in 1..nv} binary; maximize alpha_G: sum{i in 1..nv} (xs[i]+eps[i]*xs[i]); subject to constr2 {(i,j) in E_G}: xs[i]+xs[j] <= 1; option solver gurobi; # вибір солвера # nCalls разів розв’язуємо задачу (4), (2) . Залежно від вибраних значень для збурень [Введите текст] Методи і засоби програмної інженерії [Введите текст] Риcунок 1. Граф 6W та його п'ять незалежних множин максимального розміру   ( ) 0,1 ( ) ( ) max i i i ix i V G G x x    = + , (4) де випадкові величини i << 1 для всіх ( )i V G . Залежно від вибраних значень для збурень i , 1, , ( )i V G= , як розв'язок задачі (4), (2) або задачі (4), (3) отримаємо ту чи іншу незалежну множину розміру ( )G . Цей спосіб вимагає значної кількості розв'язань задачі (4), (2) або задачі (4), (3), що підтверджують ре- зультати обчислювального експерименту для знаходження незалежних множин 1 5, ,S S у графі 6W за допо- могою солвера gurobi [9]. Результати експерименту наведені у табл. 1: правила генерації випадкових збурень (колонка 1) та частота знаходження кожної з п'яти незалежних множин з рис. 1 (колонки 3–7 отримані за допо- могою розв’язання задачі (4), (2), колонки 8–12 отримані за допомогою розв’язання задачі (4), (3)) для різних кількостей запусків солвера gurobi: 10nCalls = , 100nCalls = і 1000nCalls = (колонка 2). Таблиця 1 – Частота знаходження максимальних незалежних множин 1 5, ,S S для графа 6W за рівномірного та нормального розподілів випадкових збурень i , 1,...,6i = Для булевої задачі (4), (2) Для булевої задачі (4), (3) , 1,...,6i i = nCalls ( )1n S ( )2n S ( )3n S ( )4n S ( )5n S ( )1n S ( )2n S ( )3n S ( )4n S ( )5n S 0.001  Uniform(-1,1) 10 3 2 1 1 3 3 2 1 1 3 100 19 22 24 15 20 19 22 24 15 20 1000 199 204 218 180 199 199 204 218 180 199 0.001  Normal(-1,1) 10 1 2 0 3 4 1 2 0 3 4 100 20 17 20 19 24 20 17 20 19 24 1000 197 193 206 200 204 197 193 206 200 204 Розрахунки для табл. 1 проводилися програмою-солвером gurobi 2.0.1 студентської версії AMPL [10, 11]. Частоти знаходження множин 1 5, ,S S для булевої задачі (4), (2) обчислювались за допомогою AMPL-коду: # Подання графу G для булевої задачі (4),(2) set V_G := {1,2,3,4,5,6}; # вершини графа set E_G:={(1,2),(1,5),(1,6),(2,3),(2,6),(3,4),(3,6),(4,5),(4,6),(5,6)}; # ребра графа display V_G,E_G; # Опис та задання параметрів param nCalls:=100; #кількість запусків солвера param ns{i in 1..5} default 0; #кількості множин S_i param nv := card(V_G); param eps{i in 1..nv} default 0; # Опис булевої задачі (4), (2) var xs{i in 1..nv} binary; maximize alpha_G: sum{i in 1..nv} (xs[i]+eps[i]*xs[i]); subject to constr2 {(i,j) in E_G}: xs[i]+xs[j] <= 1; option solver gurobi; # вибір солвера # nCalls разів розв’язуємо задачу (4), (2) , [Введите текст] Методи і засоби програмної інженерії [Введите текст] Риcунок 1. Граф 6W та його п'ять незалежних множин максимального розміру   ( ) 0,1 ( ) ( ) max i i i ix i V G G x x    = + , (4) де випадкові величини i << 1 для всіх ( )i V G . Залежно від вибраних значень для збурень i , 1, , ( )i V G= , як розв'язок задачі (4), (2) або задачі (4), (3) отримаємо ту чи іншу незалежну множину розміру ( )G . Цей спосіб вимагає значної кількості розв'язань задачі (4), (2) або задачі (4), (3), що підтверджують ре- зультати обчислювального експерименту для знаходження незалежних множин 1 5, ,S S у графі 6W за допо- могою солвера gurobi [9]. Результати експерименту наведені у табл. 1: правила генерації випадкових збурень (колонка 1) та частота знаходження кожної з п'яти незалежних множин з рис. 1 (колонки 3–7 отримані за допо- могою розв’язання задачі (4), (2), колонки 8–12 отримані за допомогою розв’язання задачі (4), (3)) для різних кількостей запусків солвера gurobi: 10nCalls = , 100nCalls = і 1000nCalls = (колонка 2). Таблиця 1 – Частота знаходження максимальних незалежних множин 1 5, ,S S для графа 6W за рівномірного та нормального розподілів випадкових збурень i , 1,...,6i = Для булевої задачі (4), (2) Для булевої задачі (4), (3) , 1,...,6i i = nCalls ( )1n S ( )2n S ( )3n S ( )4n S ( )5n S ( )1n S ( )2n S ( )3n S ( )4n S ( )5n S 0.001  Uniform(-1,1) 10 3 2 1 1 3 3 2 1 1 3 100 19 22 24 15 20 19 22 24 15 20 1000 199 204 218 180 199 199 204 218 180 199 0.001  Normal(-1,1) 10 1 2 0 3 4 1 2 0 3 4 100 20 17 20 19 24 20 17 20 19 24 1000 197 193 206 200 204 197 193 206 200 204 Розрахунки для табл. 1 проводилися програмою-солвером gurobi 2.0.1 студентської версії AMPL [10, 11]. Частоти знаходження множин 1 5, ,S S для булевої задачі (4), (2) обчислювались за допомогою AMPL-коду: # Подання графу G для булевої задачі (4),(2) set V_G := {1,2,3,4,5,6}; # вершини графа set E_G:={(1,2),(1,5),(1,6),(2,3),(2,6),(3,4),(3,6),(4,5),(4,6),(5,6)}; # ребра графа display V_G,E_G; # Опис та задання параметрів param nCalls:=100; #кількість запусків солвера param ns{i in 1..5} default 0; #кількості множин S_i param nv := card(V_G); param eps{i in 1..nv} default 0; # Опис булевої задачі (4), (2) var xs{i in 1..nv} binary; maximize alpha_G: sum{i in 1..nv} (xs[i]+eps[i]*xs[i]); subject to constr2 {(i,j) in E_G}: xs[i]+xs[j] <= 1; option solver gurobi; # вибір солвера # nCalls разів розв’язуємо задачу (4), (2) , як розв’язок задачі (4), (2) або задачі (4), (3) отримаємо ту чи іншу незалежну множину роз- міру [Введите текст] Методи і засоби програмної інженерії [Введите текст] Риcунок 1. Граф 6W та його п'ять незалежних множин максимального розміру   ( ) 0,1 ( ) ( ) max i i i ix i V G G x x    = + , (4) де випадкові величини i << 1 для всіх ( )i V G . Залежно від вибраних значень для збурень i , 1, , ( )i V G= , як розв'язок задачі (4), (2) або задачі (4), (3) отримаємо ту чи іншу незалежну множину розміру ( )G . Цей спосіб вимагає значної кількості розв'язань задачі (4), (2) або задачі (4), (3), що підтверджують ре- зультати обчислювального експерименту для знаходження незалежних множин 1 5, ,S S у графі 6W за допо- могою солвера gurobi [9]. Результати експерименту наведені у табл. 1: правила генерації випадкових збурень (колонка 1) та частота знаходження кожної з п'яти незалежних множин з рис. 1 (колонки 3–7 отримані за допо- могою розв’язання задачі (4), (2), колонки 8–12 отримані за допомогою розв’язання задачі (4), (3)) для різних кількостей запусків солвера gurobi: 10nCalls = , 100nCalls = і 1000nCalls = (колонка 2). Таблиця 1 – Частота знаходження максимальних незалежних множин 1 5, ,S S для графа 6W за рівномірного та нормального розподілів випадкових збурень i , 1,...,6i = Для булевої задачі (4), (2) Для булевої задачі (4), (3) , 1,...,6i i = nCalls ( )1n S ( )2n S ( )3n S ( )4n S ( )5n S ( )1n S ( )2n S ( )3n S ( )4n S ( )5n S 0.001  Uniform(-1,1) 10 3 2 1 1 3 3 2 1 1 3 100 19 22 24 15 20 19 22 24 15 20 1000 199 204 218 180 199 199 204 218 180 199 0.001  Normal(-1,1) 10 1 2 0 3 4 1 2 0 3 4 100 20 17 20 19 24 20 17 20 19 24 1000 197 193 206 200 204 197 193 206 200 204 Розрахунки для табл. 1 проводилися програмою-солвером gurobi 2.0.1 студентської версії AMPL [10, 11]. Частоти знаходження множин 1 5, ,S S для булевої задачі (4), (2) обчислювались за допомогою AMPL-коду: # Подання графу G для булевої задачі (4),(2) set V_G := {1,2,3,4,5,6}; # вершини графа set E_G:={(1,2),(1,5),(1,6),(2,3),(2,6),(3,4),(3,6),(4,5),(4,6),(5,6)}; # ребра графа display V_G,E_G; # Опис та задання параметрів param nCalls:=100; #кількість запусків солвера param ns{i in 1..5} default 0; #кількості множин S_i param nv := card(V_G); param eps{i in 1..nv} default 0; # Опис булевої задачі (4), (2) var xs{i in 1..nv} binary; maximize alpha_G: sum{i in 1..nv} (xs[i]+eps[i]*xs[i]); subject to constr2 {(i,j) in E_G}: xs[i]+xs[j] <= 1; option solver gurobi; # вибір солвера # nCalls разів розв’язуємо задачу (4), (2) . Цей спосіб вимагає значної кількості розв’язань задачі (4), (2) або задачі (4), (3), що підтверджу- ють результати обчислювального експерименту для знаходження незалежних множин [Введите текст] Методи і засоби програмної інженерії [Введите текст] Риcунок 1. Граф 6W та його п'ять незалежних множин максимального розміру   ( ) 0,1 ( ) ( ) max i i i ix i V G G x x    = + , (4) де випадкові величини i << 1 для всіх ( )i V G . Залежно від вибраних значень для збурень i , 1, , ( )i V G= , як розв'язок задачі (4), (2) або задачі (4), (3) отримаємо ту чи іншу незалежну множину розміру ( )G . Цей спосіб вимагає значної кількості розв'язань задачі (4), (2) або задачі (4), (3), що підтверджують ре- зультати обчислювального експерименту для знаходження незалежних множин 1 5, ,S S у графі 6W за допо- могою солвера gurobi [9]. Результати експерименту наведені у табл. 1: правила генерації випадкових збурень (колонка 1) та частота знаходження кожної з п'яти незалежних множин з рис. 1 (колонки 3–7 отримані за допо- могою розв’язання задачі (4), (2), колонки 8–12 отримані за допомогою розв’язання задачі (4), (3)) для різних кількостей запусків солвера gurobi: 10nCalls = , 100nCalls = і 1000nCalls = (колонка 2). Таблиця 1 – Частота знаходження максимальних незалежних множин 1 5, ,S S для графа 6W за рівномірного та нормального розподілів випадкових збурень i , 1,...,6i = Для булевої задачі (4), (2) Для булевої задачі (4), (3) , 1,...,6i i = nCalls ( )1n S ( )2n S ( )3n S ( )4n S ( )5n S ( )1n S ( )2n S ( )3n S ( )4n S ( )5n S 0.001  Uniform(-1,1) 10 3 2 1 1 3 3 2 1 1 3 100 19 22 24 15 20 19 22 24 15 20 1000 199 204 218 180 199 199 204 218 180 199 0.001  Normal(-1,1) 10 1 2 0 3 4 1 2 0 3 4 100 20 17 20 19 24 20 17 20 19 24 1000 197 193 206 200 204 197 193 206 200 204 Розрахунки для табл. 1 проводилися програмою-солвером gurobi 2.0.1 студентської версії AMPL [10, 11]. Частоти знаходження множин 1 5, ,S S для булевої задачі (4), (2) обчислювались за допомогою AMPL-коду: # Подання графу G для булевої задачі (4),(2) set V_G := {1,2,3,4,5,6}; # вершини графа set E_G:={(1,2),(1,5),(1,6),(2,3),(2,6),(3,4),(3,6),(4,5),(4,6),(5,6)}; # ребра графа display V_G,E_G; # Опис та задання параметрів param nCalls:=100; #кількість запусків солвера param ns{i in 1..5} default 0; #кількості множин S_i param nv := card(V_G); param eps{i in 1..nv} default 0; # Опис булевої задачі (4), (2) var xs{i in 1..nv} binary; maximize alpha_G: sum{i in 1..nv} (xs[i]+eps[i]*xs[i]); subject to constr2 {(i,j) in E_G}: xs[i]+xs[j] <= 1; option solver gurobi; # вибір солвера # nCalls разів розв’язуємо задачу (4), (2) у графі Методи і засоби програмної інженерії – уточнити постановки задачі про максимальну незалежну множину, подані в [3], і надати більш ефе- ктивні коди мовою AMPL для знаходження усіх максимальних незалежних множин і максимальної суми неза- лежних множин вершин неорієнтованого графа. 1. Булеві задачі для знаходження числа незалежності та їх властивості Множину вершин графа G називають незалежною, якщо ніякі дві вершини цієї множини не є суміжни- ми (не з'єднані ребром). Індукований цією множиною підграф складається з ізольованих вершин, їх кількість визначає розмір незалежної множини вершин графа. Оптимізаційна задача про максимальну незалежну множи- ну формулюється таким чином: у заданому неорієнтованому графі G без петель потрібно знайти незалежну множину максимального розміру. Цей розмір називають числом незалежності або числом внутрішньої стійкості і позначають ( )G . Задача знаходження числа незалежності ( )G належить до класу NP-повних задач [4, 5]. Задача про максимальну незалежну множину тісно пов'язана з задачею знаходження хроматичного числа ( )G – найменшої кількості різних кольорів, якими можна розфарбувати вершини графа G таким чином, щоб ніякі дві суміжні вершини не були розфарбовані однаково. В.Г. Візинг та Г.С. Плесневич встановили [6], що задачу знаходження хроматичного числа можна звести до ітеративної послідовності задач знаходження числа незалежності графів, отриманих як декартів добуток повних графів та копій графа G . Нехай  0,1ix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в незалеж- ну множину вершин графа ( ( ), ( ))G V G E G= , і нулю – в протилежному випадку. Тут ( )V G – множина вершин графа G , ( )E G – множина його ребер. Щоб знайти число незалежності ( )G , достатньо знайти один із розв'яз- ків задачі булевого лінійного програмуваннях [7]:  0,1 ( ) ( ) max i ix i V G G x   =  (1) за обмежень 1, ( , ) ( ).i jx x i j E G+   (2) Задача (1), (2) містить ( )V G булевих змінних та ( )E G обмежень у формі лінійних нерівностей. Обмеження (2) означають, що коли у графі G вершини i та j з'єднані ребром, то тільки одна з них буде належати неза- лежній множині вершин графа G . Задача (1), (2) може бути переформульована у вигляді задачі булевого лінійного програмування, яка ви- користовується для опису максимального k-плексу [8]. Для цього достатньо обмеження (2) замінити на такі: ( ) ( ) ( )1 , .j i i j i x d x i V G   −   (3) Задача (1), (3) містить ( )V G булевих змінних та ( )V G обмежень у формі лінійних нерівностей. Тут граф G представлено у формі ( ( ), ( ))G V G G=  , де  ( ) ( ), 1, ,G i i n =  = , а ( )i – кінцеві вершини тих дуг, у яких початковою є вершина i , яка має ступінь ( )id i=  . Обмеження (3) означають, що коли вершина належить незалежній множині вершин графа G , то жодна суміжна з нею вершина не може належати цій незалежній множині. В задачах (1), (3) кількість лінійних обмежень буде значно меншою, ніж у задачі (1), (2), для графів з великою кількістю ребер. Число незалежності ( )G визначається однозначно, але йому може відповідати багато максимальних не- залежних множин графа G . Так, наприклад, граф 6W (має форму колеса на основі 5C , циклу з п’яти вершин), множину ребер та матрицю суміжності якого наведено на рис. 1, містить п'ять незалежних множин розміру 6( ) 2W = . На рис. 1 наведено ці множини:  1 1,3S = ,  2 1,4S = ,  3 2,4S = ,  4 2,5S = ,  5 3,5S = . Вершини, які входять в них, позначено чорним кольором. за допомогою солвера gurobi [9]. Результати експерименту наведені у табл. 1: правила генерації випадкових збурень (колонка 1) та частота знаходження кожної з п’яти незалежних множин з рис. 1 (колонки 3–7 отри- мані за допомогою розв’язання задачі (4), (2), колонки 8–12 отримані за допомогою розв’язання задачі (4), (3)) для різних кількостей запусків солвера gurobi: [Введите текст] Методи і засоби програмної інженерії [Введите текст] Риcунок 1. Граф 6W та його п'ять незалежних множин максимального розміру   ( ) 0,1 ( ) ( ) max i i i ix i V G G x x    = + , (4) де випадкові величини i << 1 для всіх ( )i V G . Залежно від вибраних значень для збурень i , 1, , ( )i V G= , як розв'язок задачі (4), (2) або задачі (4), (3) отримаємо ту чи іншу незалежну множину розміру ( )G . Цей спосіб вимагає значної кількості розв'язань задачі (4), (2) або задачі (4), (3), що підтверджують ре- зультати обчислювального експерименту для знаходження незалежних множин 1 5, ,S S у графі 6W за допо- могою солвера gurobi [9]. Результати експерименту наведені у табл. 1: правила генерації випадкових збурень (колонка 1) та частота знаходження кожної з п'яти незалежних множин з рис. 1 (колонки 3–7 отримані за допо- могою розв’язання задачі (4), (2), колонки 8–12 отримані за допомогою розв’язання задачі (4), (3)) для різних кількостей запусків солвера gurobi: 10nCalls = , 100nCalls = і 1000nCalls = (колонка 2). Таблиця 1 – Частота знаходження максимальних незалежних множин 1 5, ,S S для графа 6W за рівномірного та нормального розподілів випадкових збурень i , 1,...,6i = Для булевої задачі (4), (2) Для булевої задачі (4), (3) , 1,...,6i i = nCalls ( )1n S ( )2n S ( )3n S ( )4n S ( )5n S ( )1n S ( )2n S ( )3n S ( )4n S ( )5n S 0.001  Uniform(-1,1) 10 3 2 1 1 3 3 2 1 1 3 100 19 22 24 15 20 19 22 24 15 20 1000 199 204 218 180 199 199 204 218 180 199 0.001  Normal(-1,1) 10 1 2 0 3 4 1 2 0 3 4 100 20 17 20 19 24 20 17 20 19 24 1000 197 193 206 200 204 197 193 206 200 204 Розрахунки для табл. 1 проводилися програмою-солвером gurobi 2.0.1 студентської версії AMPL [10, 11]. Частоти знаходження множин 1 5, ,S S для булевої задачі (4), (2) обчислювались за допомогою AMPL-коду: # Подання графу G для булевої задачі (4),(2) set V_G := {1,2,3,4,5,6}; # вершини графа set E_G:={(1,2),(1,5),(1,6),(2,3),(2,6),(3,4),(3,6),(4,5),(4,6),(5,6)}; # ребра графа display V_G,E_G; # Опис та задання параметрів param nCalls:=100; #кількість запусків солвера param ns{i in 1..5} default 0; #кількості множин S_i param nv := card(V_G); param eps{i in 1..nv} default 0; # Опис булевої задачі (4), (2) var xs{i in 1..nv} binary; maximize alpha_G: sum{i in 1..nv} (xs[i]+eps[i]*xs[i]); subject to constr2 {(i,j) in E_G}: xs[i]+xs[j] <= 1; option solver gurobi; # вибір солвера # nCalls разів розв’язуємо задачу (4), (2) (колонка 2). Таблиця 1. Частота знаходження максимальних незалежних множин [Введите текст] Методи і засоби програмної інженерії [Введите текст] Риcунок 1. Граф 6W та його п'ять незалежних множин максимального розміру   ( ) 0,1 ( ) ( ) max i i i ix i V G G x x    = + , (4) де випадкові величини i << 1 для всіх ( )i V G . Залежно від вибраних значень для збурень i , 1, , ( )i V G= , як розв'язок задачі (4), (2) або задачі (4), (3) отримаємо ту чи іншу незалежну множину розміру ( )G . Цей спосіб вимагає значної кількості розв'язань задачі (4), (2) або задачі (4), (3), що підтверджують ре- зультати обчислювального експерименту для знаходження незалежних множин 1 5, ,S S у графі 6W за допо- могою солвера gurobi [9]. Результати експерименту наведені у табл. 1: правила генерації випадкових збурень (колонка 1) та частота знаходження кожної з п'яти незалежних множин з рис. 1 (колонки 3–7 отримані за допо- могою розв’язання задачі (4), (2), колонки 8–12 отримані за допомогою розв’язання задачі (4), (3)) для різних кількостей запусків солвера gurobi: 10nCalls = , 100nCalls = і 1000nCalls = (колонка 2). Таблиця 1 – Частота знаходження максимальних незалежних множин 1 5, ,S S для графа 6W за рівномірного та нормального розподілів випадкових збурень i , 1,...,6i = Для булевої задачі (4), (2) Для булевої задачі (4), (3) , 1,...,6i i = nCalls ( )1n S ( )2n S ( )3n S ( )4n S ( )5n S ( )1n S ( )2n S ( )3n S ( )4n S ( )5n S 0.001  Uniform(-1,1) 10 3 2 1 1 3 3 2 1 1 3 100 19 22 24 15 20 19 22 24 15 20 1000 199 204 218 180 199 199 204 218 180 199 0.001  Normal(-1,1) 10 1 2 0 3 4 1 2 0 3 4 100 20 17 20 19 24 20 17 20 19 24 1000 197 193 206 200 204 197 193 206 200 204 Розрахунки для табл. 1 проводилися програмою-солвером gurobi 2.0.1 студентської версії AMPL [10, 11]. Частоти знаходження множин 1 5, ,S S для булевої задачі (4), (2) обчислювались за допомогою AMPL-коду: # Подання графу G для булевої задачі (4),(2) set V_G := {1,2,3,4,5,6}; # вершини графа set E_G:={(1,2),(1,5),(1,6),(2,3),(2,6),(3,4),(3,6),(4,5),(4,6),(5,6)}; # ребра графа display V_G,E_G; # Опис та задання параметрів param nCalls:=100; #кількість запусків солвера param ns{i in 1..5} default 0; #кількості множин S_i param nv := card(V_G); param eps{i in 1..nv} default 0; # Опис булевої задачі (4), (2) var xs{i in 1..nv} binary; maximize alpha_G: sum{i in 1..nv} (xs[i]+eps[i]*xs[i]); subject to constr2 {(i,j) in E_G}: xs[i]+xs[j] <= 1; option solver gurobi; # вибір солвера # nCalls разів розв’язуємо задачу (4), (2) для графа Методи і засоби програмної інженерії – уточнити постановки задачі про максимальну незалежну множину, подані в [3], і надати більш ефе- ктивні коди мовою AMPL для знаходження усіх максимальних незалежних множин і максимальної суми неза- лежних множин вершин неорієнтованого графа. 1. Булеві задачі для знаходження числа незалежності та їх властивості Множину вершин графа G називають незалежною, якщо ніякі дві вершини цієї множини не є суміжни- ми (не з'єднані ребром). Індукований цією множиною підграф складається з ізольованих вершин, їх кількість визначає розмір незалежної множини вершин графа. Оптимізаційна задача про максимальну незалежну множи- ну формулюється таким чином: у заданому неорієнтованому графі G без петель потрібно знайти незалежну множину максимального розміру. Цей розмір називають числом незалежності або числом внутрішньої стійкості і позначають ( )G . Задача знаходження числа незалежності ( )G належить до класу NP-повних задач [4, 5]. Задача про максимальну незалежну множину тісно пов'язана з задачею знаходження хроматичного числа ( )G – найменшої кількості різних кольорів, якими можна розфарбувати вершини графа G таким чином, щоб ніякі дві суміжні вершини не були розфарбовані однаково. В.Г. Візинг та Г.С. Плесневич встановили [6], що задачу знаходження хроматичного числа можна звести до ітеративної послідовності задач знаходження числа незалежності графів, отриманих як декартів добуток повних графів та копій графа G . Нехай  0,1ix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в незалеж- ну множину вершин графа ( ( ), ( ))G V G E G= , і нулю – в протилежному випадку. Тут ( )V G – множина вершин графа G , ( )E G – множина його ребер. Щоб знайти число незалежності ( )G , достатньо знайти один із розв'яз- ків задачі булевого лінійного програмуваннях [7]:  0,1 ( ) ( ) max i ix i V G G x   =  (1) за обмежень 1, ( , ) ( ).i jx x i j E G+   (2) Задача (1), (2) містить ( )V G булевих змінних та ( )E G обмежень у формі лінійних нерівностей. Обмеження (2) означають, що коли у графі G вершини i та j з'єднані ребром, то тільки одна з них буде належати неза- лежній множині вершин графа G . Задача (1), (2) може бути переформульована у вигляді задачі булевого лінійного програмування, яка ви- користовується для опису максимального k-плексу [8]. Для цього достатньо обмеження (2) замінити на такі: ( ) ( ) ( )1 , .j i i j i x d x i V G   −   (3) Задача (1), (3) містить ( )V G булевих змінних та ( )V G обмежень у формі лінійних нерівностей. Тут граф G представлено у формі ( ( ), ( ))G V G G=  , де  ( ) ( ), 1, ,G i i n =  = , а ( )i – кінцеві вершини тих дуг, у яких початковою є вершина i , яка має ступінь ( )id i=  . Обмеження (3) означають, що коли вершина належить незалежній множині вершин графа G , то жодна суміжна з нею вершина не може належати цій незалежній множині. В задачах (1), (3) кількість лінійних обмежень буде значно меншою, ніж у задачі (1), (2), для графів з великою кількістю ребер. Число незалежності ( )G визначається однозначно, але йому може відповідати багато максимальних не- залежних множин графа G . Так, наприклад, граф 6W (має форму колеса на основі 5C , циклу з п’яти вершин), множину ребер та матрицю суміжності якого наведено на рис. 1, містить п'ять незалежних множин розміру 6( ) 2W = . На рис. 1 наведено ці множини:  1 1,3S = ,  2 1,4S = ,  3 2,4S = ,  4 2,5S = ,  5 3,5S = . Вершини, які входять в них, позначено чорним кольором. за рівномірного та нормального розподілів випадкових збурень [Введите текст] Методи і засоби програмної інженерії [Введите текст] Риcунок 1. Граф 6W та його п'ять незалежних множин максимального розміру   ( ) 0,1 ( ) ( ) max i i i ix i V G G x x    = + , (4) де випадкові величини i << 1 для всіх ( )i V G . Залежно від вибраних значень для збурень i , 1, , ( )i V G= , як розв'язок задачі (4), (2) або задачі (4), (3) отримаємо ту чи іншу незалежну множину розміру ( )G . Цей спосіб вимагає значної кількості розв'язань задачі (4), (2) або задачі (4), (3), що підтверджують ре- зультати обчислювального експерименту для знаходження незалежних множин 1 5, ,S S у графі 6W за допо- могою солвера gurobi [9]. Результати експерименту наведені у табл. 1: правила генерації випадкових збурень (колонка 1) та частота знаходження кожної з п'яти незалежних множин з рис. 1 (колонки 3–7 отримані за допо- могою розв’язання задачі (4), (2), колонки 8–12 отримані за допомогою розв’язання задачі (4), (3)) для різних кількостей запусків солвера gurobi: 10nCalls = , 100nCalls = і 1000nCalls = (колонка 2). Таблиця 1 – Частота знаходження максимальних незалежних множин 1 5, ,S S для графа 6W за рівномірного та нормального розподілів випадкових збурень i , 1,...,6i = Для булевої задачі (4), (2) Для булевої задачі (4), (3) , 1,...,6i i = nCalls ( )1n S ( )2n S ( )3n S ( )4n S ( )5n S ( )1n S ( )2n S ( )3n S ( )4n S ( )5n S 0.001  Uniform(-1,1) 10 3 2 1 1 3 3 2 1 1 3 100 19 22 24 15 20 19 22 24 15 20 1000 199 204 218 180 199 199 204 218 180 199 0.001  Normal(-1,1) 10 1 2 0 3 4 1 2 0 3 4 100 20 17 20 19 24 20 17 20 19 24 1000 197 193 206 200 204 197 193 206 200 204 Розрахунки для табл. 1 проводилися програмою-солвером gurobi 2.0.1 студентської версії AMPL [10, 11]. Частоти знаходження множин 1 5, ,S S для булевої задачі (4), (2) обчислювались за допомогою AMPL-коду: # Подання графу G для булевої задачі (4),(2) set V_G := {1,2,3,4,5,6}; # вершини графа set E_G:={(1,2),(1,5),(1,6),(2,3),(2,6),(3,4),(3,6),(4,5),(4,6),(5,6)}; # ребра графа display V_G,E_G; # Опис та задання параметрів param nCalls:=100; #кількість запусків солвера param ns{i in 1..5} default 0; #кількості множин S_i param nv := card(V_G); param eps{i in 1..nv} default 0; # Опис булевої задачі (4), (2) var xs{i in 1..nv} binary; maximize alpha_G: sum{i in 1..nv} (xs[i]+eps[i]*xs[i]); subject to constr2 {(i,j) in E_G}: xs[i]+xs[j] <= 1; option solver gurobi; # вибір солвера # nCalls разів розв’язуємо задачу (4), (2) Для булевої задачі (4), (2) Для булевої задачі (4), (3) [Введите текст] Методи і засоби програмної інженерії [Введите текст] Риcунок 1. Граф 6W та його п'ять незалежних множин максимального розміру   ( ) 0,1 ( ) ( ) max i i i ix i V G G x x    = + , (4) де випадкові величини i << 1 для всіх ( )i V G . Залежно від вибраних значень для збурень i , 1, , ( )i V G= , як розв'язок задачі (4), (2) або задачі (4), (3) отримаємо ту чи іншу незалежну множину розміру ( )G . Цей спосіб вимагає значної кількості розв'язань задачі (4), (2) або задачі (4), (3), що підтверджують ре- зультати обчислювального експерименту для знаходження незалежних множин 1 5, ,S S у графі 6W за допо- могою солвера gurobi [9]. Результати експерименту наведені у табл. 1: правила генерації випадкових збурень (колонка 1) та частота знаходження кожної з п'яти незалежних множин з рис. 1 (колонки 3–7 отримані за допо- могою розв’язання задачі (4), (2), колонки 8–12 отримані за допомогою розв’язання задачі (4), (3)) для різних кількостей запусків солвера gurobi: 10nCalls = , 100nCalls = і 1000nCalls = (колонка 2). Таблиця 1 – Частота знаходження максимальних незалежних множин 1 5, ,S S для графа 6W за рівномірного та нормального розподілів випадкових збурень i , 1,...,6i = Для булевої задачі (4), (2) Для булевої задачі (4), (3) , 1,...,6i i = nCalls ( )1n S ( )2n S ( )3n S ( )4n S ( )5n S ( )1n S ( )2n S ( )3n S ( )4n S ( )5n S 0.001  Uniform(-1,1) 10 3 2 1 1 3 3 2 1 1 3 100 19 22 24 15 20 19 22 24 15 20 1000 199 204 218 180 199 199 204 218 180 199 0.001  Normal(-1,1) 10 1 2 0 3 4 1 2 0 3 4 100 20 17 20 19 24 20 17 20 19 24 1000 197 193 206 200 204 197 193 206 200 204 Розрахунки для табл. 1 проводилися програмою-солвером gurobi 2.0.1 студентської версії AMPL [10, 11]. Частоти знаходження множин 1 5, ,S S для булевої задачі (4), (2) обчислювались за допомогою AMPL-коду: # Подання графу G для булевої задачі (4),(2) set V_G := {1,2,3,4,5,6}; # вершини графа set E_G:={(1,2),(1,5),(1,6),(2,3),(2,6),(3,4),(3,6),(4,5),(4,6),(5,6)}; # ребра графа display V_G,E_G; # Опис та задання параметрів param nCalls:=100; #кількість запусків солвера param ns{i in 1..5} default 0; #кількості множин S_i param nv := card(V_G); param eps{i in 1..nv} default 0; # Опис булевої задачі (4), (2) var xs{i in 1..nv} binary; maximize alpha_G: sum{i in 1..nv} (xs[i]+eps[i]*xs[i]); subject to constr2 {(i,j) in E_G}: xs[i]+xs[j] <= 1; option solver gurobi; # вибір солвера # nCalls разів розв’язуємо задачу (4), (2) [Введите текст] Методи і засоби програмної інженерії [Введите текст] Риcунок 1. Граф 6W та його п'ять незалежних множин максимального розміру   ( ) 0,1 ( ) ( ) max i i i ix i V G G x x    = + , (4) де випадкові величини i << 1 для всіх ( )i V G . Залежно від вибраних значень для збурень i , 1, , ( )i V G= , як розв'язок задачі (4), (2) або задачі (4), (3) отримаємо ту чи іншу незалежну множину розміру ( )G . Цей спосіб вимагає значної кількості розв'язань задачі (4), (2) або задачі (4), (3), що підтверджують ре- зультати обчислювального експерименту для знаходження незалежних множин 1 5, ,S S у графі 6W за допо- могою солвера gurobi [9]. Результати експерименту наведені у табл. 1: правила генерації випадкових збурень (колонка 1) та частота знаходження кожної з п'яти незалежних множин з рис. 1 (колонки 3–7 отримані за допо- могою розв’язання задачі (4), (2), колонки 8–12 отримані за допомогою розв’язання задачі (4), (3)) для різних кількостей запусків солвера gurobi: 10nCalls = , 100nCalls = і 1000nCalls = (колонка 2). Таблиця 1 – Частота знаходження максимальних незалежних множин 1 5, ,S S для графа 6W за рівномірного та нормального розподілів випадкових збурень i , 1,...,6i = Для булевої задачі (4), (2) Для булевої задачі (4), (3) , 1,...,6i i = nCalls ( )1n S ( )2n S ( )3n S ( )4n S ( )5n S ( )1n S ( )2n S ( )3n S ( )4n S ( )5n S 0.001  Uniform(-1,1) 10 3 2 1 1 3 3 2 1 1 3 100 19 22 24 15 20 19 22 24 15 20 1000 199 204 218 180 199 199 204 218 180 199 0.001  Normal(-1,1) 10 1 2 0 3 4 1 2 0 3 4 100 20 17 20 19 24 20 17 20 19 24 1000 197 193 206 200 204 197 193 206 200 204 Розрахунки для табл. 1 проводилися програмою-солвером gurobi 2.0.1 студентської версії AMPL [10, 11]. Частоти знаходження множин 1 5, ,S S для булевої задачі (4), (2) обчислювались за допомогою AMPL-коду: # Подання графу G для булевої задачі (4),(2) set V_G := {1,2,3,4,5,6}; # вершини графа set E_G:={(1,2),(1,5),(1,6),(2,3),(2,6),(3,4),(3,6),(4,5),(4,6),(5,6)}; # ребра графа display V_G,E_G; # Опис та задання параметрів param nCalls:=100; #кількість запусків солвера param ns{i in 1..5} default 0; #кількості множин S_i param nv := card(V_G); param eps{i in 1..nv} default 0; # Опис булевої задачі (4), (2) var xs{i in 1..nv} binary; maximize alpha_G: sum{i in 1..nv} (xs[i]+eps[i]*xs[i]); subject to constr2 {(i,j) in E_G}: xs[i]+xs[j] <= 1; option solver gurobi; # вибір солвера # nCalls разів розв’язуємо задачу (4), (2) n(S1) n(S2) n(S3) n(S4) n(S5) n(S1) n(S2) n(S3) n(S4) n(S5) 0.001 Uniform(-1,1) 10 3 2 1 1 3 3 2 1 1 3 100 19 22 24 15 20 19 22 24 15 20 1000 199 204 218 180 199 199 204 218 180 199 0.001 Normal(-1,1) 10 1 2 0 3 4 1 2 0 3 4 100 20 17 20 19 24 20 17 20 19 24 1000 197 193 206 200 204 197 193 206 200 204 Розрахунки для табл. 1 проводилися програмою-солвером gurobi 2.0.1 студентської версії AMPL [10, 11]. Частоти знаходження множин [Введите текст] Методи і засоби програмної інженерії [Введите текст] Риcунок 1. Граф 6W та його п'ять незалежних множин максимального розміру   ( ) 0,1 ( ) ( ) max i i i ix i V G G x x    = + , (4) де випадкові величини i << 1 для всіх ( )i V G . Залежно від вибраних значень для збурень i , 1, , ( )i V G= , як розв'язок задачі (4), (2) або задачі (4), (3) отримаємо ту чи іншу незалежну множину розміру ( )G . Цей спосіб вимагає значної кількості розв'язань задачі (4), (2) або задачі (4), (3), що підтверджують ре- зультати обчислювального експерименту для знаходження незалежних множин 1 5, ,S S у графі 6W за допо- могою солвера gurobi [9]. Результати експерименту наведені у табл. 1: правила генерації випадкових збурень (колонка 1) та частота знаходження кожної з п'яти незалежних множин з рис. 1 (колонки 3–7 отримані за допо- могою розв’язання задачі (4), (2), колонки 8–12 отримані за допомогою розв’язання задачі (4), (3)) для різних кількостей запусків солвера gurobi: 10nCalls = , 100nCalls = і 1000nCalls = (колонка 2). Таблиця 1 – Частота знаходження максимальних незалежних множин 1 5, ,S S для графа 6W за рівномірного та нормального розподілів випадкових збурень i , 1,...,6i = Для булевої задачі (4), (2) Для булевої задачі (4), (3) , 1,...,6i i = nCalls ( )1n S ( )2n S ( )3n S ( )4n S ( )5n S ( )1n S ( )2n S ( )3n S ( )4n S ( )5n S 0.001  Uniform(-1,1) 10 3 2 1 1 3 3 2 1 1 3 100 19 22 24 15 20 19 22 24 15 20 1000 199 204 218 180 199 199 204 218 180 199 0.001  Normal(-1,1) 10 1 2 0 3 4 1 2 0 3 4 100 20 17 20 19 24 20 17 20 19 24 1000 197 193 206 200 204 197 193 206 200 204 Розрахунки для табл. 1 проводилися програмою-солвером gurobi 2.0.1 студентської версії AMPL [10, 11]. Частоти знаходження множин 1 5, ,S S для булевої задачі (4), (2) обчислювались за допомогою AMPL-коду: # Подання графу G для булевої задачі (4),(2) set V_G := {1,2,3,4,5,6}; # вершини графа set E_G:={(1,2),(1,5),(1,6),(2,3),(2,6),(3,4),(3,6),(4,5),(4,6),(5,6)}; # ребра графа display V_G,E_G; # Опис та задання параметрів param nCalls:=100; #кількість запусків солвера param ns{i in 1..5} default 0; #кількості множин S_i param nv := card(V_G); param eps{i in 1..nv} default 0; # Опис булевої задачі (4), (2) var xs{i in 1..nv} binary; maximize alpha_G: sum{i in 1..nv} (xs[i]+eps[i]*xs[i]); subject to constr2 {(i,j) in E_G}: xs[i]+xs[j] <= 1; option solver gurobi; # вибір солвера # nCalls разів розв’язуємо задачу (4), (2) для булевої задачі (4), (2) обчислювались за допомогою AMPL-коду: # Подання графу G для булевої задачі (4),(2) set V_G := {1,2,3,4,5,6}; # вершини графа set E_G:={(1,2),(1,5),(1,6),(2,3),(2,6),(3,4),(3,6),(4,5),(4,6),(5,6)}; # ребра графа display V_G,E_G; # Опис та задання параметрів param nCalls:=100; #кількість запусків солвера param ns{i in 1..5} default 0; #кількості множин S_i param nv := card(V_G); param eps{i in 1..nv} default 0; # Опис булевої задачі (4), (2) var xs{i in 1..nv} binary; maximize alpha_G: sum{i in 1..nv} (xs[i]+eps[i]*xs[i]); subject to constr2 {(i,j) in E_G}: xs[i]+xs[j] <= 1; option solver gurobi; # вибір солвера # nCalls разів розв’язуємо задачу (4), (2) for{k in 1..nCalls} { for{i in 1..nv} { let eps[i]:= 0.001*Uniform(-1,1); #0.001*Normal(0,0.1) } solve; display alpha_G; if (xs[1]=1 and xs[3]=1) then let ns[1]:=ns[1]+1; if (xs[1]=1 and xs[4]=1) then let ns[2]:=ns[2]+1; if (xs[2]=1 and xs[4]=1) then let ns[3]:=ns[3]+1; if (xs[2]=1 and xs[5]=1) then let ns[4]:=ns[4]+1; if (xs[3]=1 and xs[5]=1) then let ns[5]:=ns[5]+1; } display sum{i in 1..5}ns[i],ns; 76 Методи і засоби програмної інженерії а для булевої задачі (4), (3) обчислювались за допомогою такого AMPL-коду: # Опис графу G для булевої задачі (4), (3) set V_G := {1,2,3,4,5,6}; # вершини графа param nv := card(V_G); # кількість вершин графа param I_G{i in 1..nv, j in 1..nv} >=0 <=1; param d{i in 1..nv} = sum{j in 1..nv} I_G[i,j]; # Опис та задання параметрів param nCalls:=100; #кількість запусків солвера param ns{i in 1..5} default 0; #кількості множин S_i param eps{i in 1..nv} default 0; # Опис булевої задачі (4), (3) var xs{i in 1..nv} binary; maximize alpha_G: sum{i in 1..nv} (xs[i]+eps[i]*xs[i]); subject to constr3 {i in 1..nv}: sum{j in 1..nv} I_G[i,j]*xs[j] <= d[i]*(1- xs[i]); option solver gurobi; # вибір солвера data; param I_G: 1 2 3 4 5 6:= 1 0 1 0 0 1 1 2 1 0 1 0 0 1 3 0 1 0 1 0 1 4 0 0 1 0 1 1 5 1 0 0 1 0 1 6 1 1 1 1 1 0; display V_G,I_G; # nCalls разів роз’язуємо задачу (4), (3) for{k in 1..nCalls} { for{i in 1..nv} { let eps[i]:= 0.001*Uniform(-1,1); #0.001*Normal(-1,1) } solve; display alpha_G; if (xs[1]=1 and xs[3]=1) then let ns[1]:=ns[1]+1; if (xs[1]=1 and xs[4]=1) then let ns[2]:=ns[2]+1; if (xs[2]=1 and xs[4]=1) then let ns[3]:=ns[3]+1; if (xs[2]=1 and xs[5]=1) then let ns[4]:=ns[4]+1; if (xs[3]=1 and xs[5]=1) then let ns[5]:=ns[5]+1; } display sum{i in 1..5}ns[i],ns; З табл. 1 видно, що частоти знаходження кожної з п’яти незалежних множин, які отримані за допо- могою розв’язання задачі (4), (2), співпадають з частотами, отриманими за допомогою розв’язання задачі (4), (3). Зауважимо, що за десяти запусків солвера gurobi незалежна множина S3 жодного разу не була знайдена при нормальному розподілі. Із зростанням кількості запусків (100 та 1000) солвера gurobi імовірність зна- ходження кожної множини наближається до 1/5 (20%). 2. Алгоритм знаходження усіх максимальних незалежних множин У даному розділі розглянемо суттєво економніший спосіб для знаходження усіх максимальних неза- лежних множин вершин графа G, який за кожний послідовний запуск солвера gurobi буде або знаходити нову незалежну множину розміру Методи і засоби програмної інженерії for{k in 1..nCalls} { for{i in 1..nv} { let eps[i]:= 0.001*Uniform(-1,1); #0.001*Normal(0,0.1) } solve; display alpha_G; if (xs[1]=1 and xs[3]=1) then let ns[1]:=ns[1]+1; if (xs[1]=1 and xs[4]=1) then let ns[2]:=ns[2]+1; if (xs[2]=1 and xs[4]=1) then let ns[3]:=ns[3]+1; if (xs[2]=1 and xs[5]=1) then let ns[4]:=ns[4]+1; if (xs[3]=1 and xs[5]=1) then let ns[5]:=ns[5]+1; } display sum{i in 1..5}ns[i],ns; а для булевої задачі (4), (3) обчислювались за допомогою такого AMPL-коду: # Опис графу G для булевої задачі (4), (3) set V_G := {1,2,3,4,5,6}; # вершини графа param nv := card(V_G); # кількість вершин графа param I_G{i in 1..nv, j in 1..nv} >=0 <=1; param d{i in 1..nv} = sum{j in 1..nv} I_G[i,j]; # Опис та задання параметрів param nCalls:=100; #кількість запусків солвера param ns{i in 1..5} default 0; #кількості множин S_i param eps{i in 1..nv} default 0; # Опис булевої задачі (4), (3) var xs{i in 1..nv} binary; maximize alpha_G: sum{i in 1..nv} (xs[i]+eps[i]*xs[i]); subject to constr3 {i in 1..nv}: sum{j in 1..nv} I_G[i,j]*xs[j] <= d[i]*(1-xs[i]); option solver gurobi; # вибір солвера data; param I_G: 1 2 3 4 5 6:= 1 0 1 0 0 1 1 2 1 0 1 0 0 1 3 0 1 0 1 0 1 4 0 0 1 0 1 1 5 1 0 0 1 0 1 6 1 1 1 1 1 0; display V_G,I_G; # nCalls разів роз’язуємо задачу (4), (3) for{k in 1..nCalls} { for{i in 1..nv} { let eps[i]:= 0.001*Uniform(-1,1); #0.001*Normal(-1,1) } solve; display alpha_G; if (xs[1]=1 and xs[3]=1) then let ns[1]:=ns[1]+1; if (xs[1]=1 and xs[4]=1) then let ns[2]:=ns[2]+1; if (xs[2]=1 and xs[4]=1) then let ns[3]:=ns[3]+1; if (xs[2]=1 and xs[5]=1) then let ns[4]:=ns[4]+1; if (xs[3]=1 and xs[5]=1) then let ns[5]:=ns[5]+1; } display sum{i in 1..5}ns[i],ns; З табл. 1 видно, що частоти знаходження кожної з п'яти незалежних множин, які отримані за допомогою розв’язання задачі (4), (2), співпадають з частотами, отриманими за допомогою розв’язання задачі (4), (3). За- уважимо, що за десяти запусків солвера gurobi незалежна множина 3S жодного разу не була знайдена при нор- мальному розподілі. Із зростанням кількості запусків (100 та 1000) солвера gurobi імовірність знаходження кожної множини наближається до 1 5 (20%). 2. Алгоритм знаходження усіх максимальних незалежних множин У даному розділі розглянемо суттєво економніший спосіб для знаходження усіх максимальних незалеж- них множин вершин графа G , який за кожний послідовний запуск солвера gurobi буде або знаходити нову незалежну множину розміру ( )G , або закінчувати роботу, якщо незалежні множини розміру ( )G уже виб- рані. Він полягає у наступному. Нехай знайдено m максимальних незалежних множин , 1, , ,jS j m= і серед них немає співпадаючих. Щоб знайти нову максимальну незалежну множину, додамо до задачі (1), (2) або до задачі (1), (3) обмеження: ( ) ( ) 1 2, 1,..., . j i K i V S x G j m   − = (5) Лінійні нерівності (5) відсікають уже знайдені множини , 1, ,jS j m= , тому розв'язком задачі (1), (2), (5) або задачі (1), (3), (5) буде нова незалежна множина 1mS + . Якщо її розмір дорівнює ( )G , то множина 1mS + , або закінчувати роботу, якщо незалежні множини розміру Методи і засоби програмної інженерії for{k in 1..nCalls} { for{i in 1..nv} { let eps[i]:= 0.001*Uniform(-1,1); #0.001*Normal(0,0.1) } solve; display alpha_G; if (xs[1]=1 and xs[3]=1) then let ns[1]:=ns[1]+1; if (xs[1]=1 and xs[4]=1) then let ns[2]:=ns[2]+1; if (xs[2]=1 and xs[4]=1) then let ns[3]:=ns[3]+1; if (xs[2]=1 and xs[5]=1) then let ns[4]:=ns[4]+1; if (xs[3]=1 and xs[5]=1) then let ns[5]:=ns[5]+1; } display sum{i in 1..5}ns[i],ns; а для булевої задачі (4), (3) обчислювались за допомогою такого AMPL-коду: # Опис графу G для булевої задачі (4), (3) set V_G := {1,2,3,4,5,6}; # вершини графа param nv := card(V_G); # кількість вершин графа param I_G{i in 1..nv, j in 1..nv} >=0 <=1; param d{i in 1..nv} = sum{j in 1..nv} I_G[i,j]; # Опис та задання параметрів param nCalls:=100; #кількість запусків солвера param ns{i in 1..5} default 0; #кількості множин S_i param eps{i in 1..nv} default 0; # Опис булевої задачі (4), (3) var xs{i in 1..nv} binary; maximize alpha_G: sum{i in 1..nv} (xs[i]+eps[i]*xs[i]); subject to constr3 {i in 1..nv}: sum{j in 1..nv} I_G[i,j]*xs[j] <= d[i]*(1-xs[i]); option solver gurobi; # вибір солвера data; param I_G: 1 2 3 4 5 6:= 1 0 1 0 0 1 1 2 1 0 1 0 0 1 3 0 1 0 1 0 1 4 0 0 1 0 1 1 5 1 0 0 1 0 1 6 1 1 1 1 1 0; display V_G,I_G; # nCalls разів роз’язуємо задачу (4), (3) for{k in 1..nCalls} { for{i in 1..nv} { let eps[i]:= 0.001*Uniform(-1,1); #0.001*Normal(-1,1) } solve; display alpha_G; if (xs[1]=1 and xs[3]=1) then let ns[1]:=ns[1]+1; if (xs[1]=1 and xs[4]=1) then let ns[2]:=ns[2]+1; if (xs[2]=1 and xs[4]=1) then let ns[3]:=ns[3]+1; if (xs[2]=1 and xs[5]=1) then let ns[4]:=ns[4]+1; if (xs[3]=1 and xs[5]=1) then let ns[5]:=ns[5]+1; } display sum{i in 1..5}ns[i],ns; З табл. 1 видно, що частоти знаходження кожної з п'яти незалежних множин, які отримані за допомогою розв’язання задачі (4), (2), співпадають з частотами, отриманими за допомогою розв’язання задачі (4), (3). За- уважимо, що за десяти запусків солвера gurobi незалежна множина 3S жодного разу не була знайдена при нор- мальному розподілі. Із зростанням кількості запусків (100 та 1000) солвера gurobi імовірність знаходження кожної множини наближається до 1 5 (20%). 2. Алгоритм знаходження усіх максимальних незалежних множин У даному розділі розглянемо суттєво економніший спосіб для знаходження усіх максимальних незалеж- них множин вершин графа G , який за кожний послідовний запуск солвера gurobi буде або знаходити нову незалежну множину розміру ( )G , або закінчувати роботу, якщо незалежні множини розміру ( )G уже виб- рані. Він полягає у наступному. Нехай знайдено m максимальних незалежних множин , 1, , ,jS j m= і серед них немає співпадаючих. Щоб знайти нову максимальну незалежну множину, додамо до задачі (1), (2) або до задачі (1), (3) обмеження: ( ) ( ) 1 2, 1,..., . j i K i V S x G j m   − = (5) Лінійні нерівності (5) відсікають уже знайдені множини , 1, ,jS j m= , тому розв'язком задачі (1), (2), (5) або задачі (1), (3), (5) буде нова незалежна множина 1mS + . Якщо її розмір дорівнює ( )G , то множина 1mS + уже ви- брані. Він полягає у наступному. Нехай знайдено m максимальних незалежних множин Методи і засоби програмної інженерії for{k in 1..nCalls} { for{i in 1..nv} { let eps[i]:= 0.001*Uniform(-1,1); #0.001*Normal(0,0.1) } solve; display alpha_G; if (xs[1]=1 and xs[3]=1) then let ns[1]:=ns[1]+1; if (xs[1]=1 and xs[4]=1) then let ns[2]:=ns[2]+1; if (xs[2]=1 and xs[4]=1) then let ns[3]:=ns[3]+1; if (xs[2]=1 and xs[5]=1) then let ns[4]:=ns[4]+1; if (xs[3]=1 and xs[5]=1) then let ns[5]:=ns[5]+1; } display sum{i in 1..5}ns[i],ns; а для булевої задачі (4), (3) обчислювались за допомогою такого AMPL-коду: # Опис графу G для булевої задачі (4), (3) set V_G := {1,2,3,4,5,6}; # вершини графа param nv := card(V_G); # кількість вершин графа param I_G{i in 1..nv, j in 1..nv} >=0 <=1; param d{i in 1..nv} = sum{j in 1..nv} I_G[i,j]; # Опис та задання параметрів param nCalls:=100; #кількість запусків солвера param ns{i in 1..5} default 0; #кількості множин S_i param eps{i in 1..nv} default 0; # Опис булевої задачі (4), (3) var xs{i in 1..nv} binary; maximize alpha_G: sum{i in 1..nv} (xs[i]+eps[i]*xs[i]); subject to constr3 {i in 1..nv}: sum{j in 1..nv} I_G[i,j]*xs[j] <= d[i]*(1-xs[i]); option solver gurobi; # вибір солвера data; param I_G: 1 2 3 4 5 6:= 1 0 1 0 0 1 1 2 1 0 1 0 0 1 3 0 1 0 1 0 1 4 0 0 1 0 1 1 5 1 0 0 1 0 1 6 1 1 1 1 1 0; display V_G,I_G; # nCalls разів роз’язуємо задачу (4), (3) for{k in 1..nCalls} { for{i in 1..nv} { let eps[i]:= 0.001*Uniform(-1,1); #0.001*Normal(-1,1) } solve; display alpha_G; if (xs[1]=1 and xs[3]=1) then let ns[1]:=ns[1]+1; if (xs[1]=1 and xs[4]=1) then let ns[2]:=ns[2]+1; if (xs[2]=1 and xs[4]=1) then let ns[3]:=ns[3]+1; if (xs[2]=1 and xs[5]=1) then let ns[4]:=ns[4]+1; if (xs[3]=1 and xs[5]=1) then let ns[5]:=ns[5]+1; } display sum{i in 1..5}ns[i],ns; З табл. 1 видно, що частоти знаходження кожної з п'яти незалежних множин, які отримані за допомогою розв’язання задачі (4), (2), співпадають з частотами, отриманими за допомогою розв’язання задачі (4), (3). За- уважимо, що за десяти запусків солвера gurobi незалежна множина 3S жодного разу не була знайдена при нор- мальному розподілі. Із зростанням кількості запусків (100 та 1000) солвера gurobi імовірність знаходження кожної множини наближається до 1 5 (20%). 2. Алгоритм знаходження усіх максимальних незалежних множин У даному розділі розглянемо суттєво економніший спосіб для знаходження усіх максимальних незалеж- них множин вершин графа G , який за кожний послідовний запуск солвера gurobi буде або знаходити нову незалежну множину розміру ( )G , або закінчувати роботу, якщо незалежні множини розміру ( )G уже виб- рані. Він полягає у наступному. Нехай знайдено m максимальних незалежних множин , 1, , ,jS j m= і серед них немає співпадаючих. Щоб знайти нову максимальну незалежну множину, додамо до задачі (1), (2) або до задачі (1), (3) обмеження: ( ) ( ) 1 2, 1,..., . j i K i V S x G j m   − = (5) Лінійні нерівності (5) відсікають уже знайдені множини , 1, ,jS j m= , тому розв'язком задачі (1), (2), (5) або задачі (1), (3), (5) буде нова незалежна множина 1mS + . Якщо її розмір дорівнює ( )G , то множина 1mS + і серед них немає співпадаючих. Щоб знайти нову максимальну незалежну множину, додамо до задачі (1), (2) або до задачі (1), (3) обмеження: Методи і засоби програмної інженерії for{k in 1..nCalls} { for{i in 1..nv} { let eps[i]:= 0.001*Uniform(-1,1); #0.001*Normal(0,0.1) } solve; display alpha_G; if (xs[1]=1 and xs[3]=1) then let ns[1]:=ns[1]+1; if (xs[1]=1 and xs[4]=1) then let ns[2]:=ns[2]+1; if (xs[2]=1 and xs[4]=1) then let ns[3]:=ns[3]+1; if (xs[2]=1 and xs[5]=1) then let ns[4]:=ns[4]+1; if (xs[3]=1 and xs[5]=1) then let ns[5]:=ns[5]+1; } display sum{i in 1..5}ns[i],ns; а для булевої задачі (4), (3) обчислювались за допомогою такого AMPL-коду: # Опис графу G для булевої задачі (4), (3) set V_G := {1,2,3,4,5,6}; # вершини графа param nv := card(V_G); # кількість вершин графа param I_G{i in 1..nv, j in 1..nv} >=0 <=1; param d{i in 1..nv} = sum{j in 1..nv} I_G[i,j]; # Опис та задання параметрів param nCalls:=100; #кількість запусків солвера param ns{i in 1..5} default 0; #кількості множин S_i param eps{i in 1..nv} default 0; # Опис булевої задачі (4), (3) var xs{i in 1..nv} binary; maximize alpha_G: sum{i in 1..nv} (xs[i]+eps[i]*xs[i]); subject to constr3 {i in 1..nv}: sum{j in 1..nv} I_G[i,j]*xs[j] <= d[i]*(1-xs[i]); option solver gurobi; # вибір солвера data; param I_G: 1 2 3 4 5 6:= 1 0 1 0 0 1 1 2 1 0 1 0 0 1 3 0 1 0 1 0 1 4 0 0 1 0 1 1 5 1 0 0 1 0 1 6 1 1 1 1 1 0; display V_G,I_G; # nCalls разів роз’язуємо задачу (4), (3) for{k in 1..nCalls} { for{i in 1..nv} { let eps[i]:= 0.001*Uniform(-1,1); #0.001*Normal(-1,1) } solve; display alpha_G; if (xs[1]=1 and xs[3]=1) then let ns[1]:=ns[1]+1; if (xs[1]=1 and xs[4]=1) then let ns[2]:=ns[2]+1; if (xs[2]=1 and xs[4]=1) then let ns[3]:=ns[3]+1; if (xs[2]=1 and xs[5]=1) then let ns[4]:=ns[4]+1; if (xs[3]=1 and xs[5]=1) then let ns[5]:=ns[5]+1; } display sum{i in 1..5}ns[i],ns; З табл. 1 видно, що частоти знаходження кожної з п'яти незалежних множин, які отримані за допомогою розв’язання задачі (4), (2), співпадають з частотами, отриманими за допомогою розв’язання задачі (4), (3). За- уважимо, що за десяти запусків солвера gurobi незалежна множина 3S жодного разу не була знайдена при нор- мальному розподілі. Із зростанням кількості запусків (100 та 1000) солвера gurobi імовірність знаходження кожної множини наближається до 1 5 (20%). 2. Алгоритм знаходження усіх максимальних незалежних множин У даному розділі розглянемо суттєво економніший спосіб для знаходження усіх максимальних незалеж- них множин вершин графа G , який за кожний послідовний запуск солвера gurobi буде або знаходити нову незалежну множину розміру ( )G , або закінчувати роботу, якщо незалежні множини розміру ( )G уже виб- рані. Він полягає у наступному. Нехай знайдено m максимальних незалежних множин , 1, , ,jS j m= і серед них немає співпадаючих. Щоб знайти нову максимальну незалежну множину, додамо до задачі (1), (2) або до задачі (1), (3) обмеження: ( ) ( ) 1 2, 1,..., . j i K i V S x G j m   − = (5) Лінійні нерівності (5) відсікають уже знайдені множини , 1, ,jS j m= , тому розв'язком задачі (1), (2), (5) або задачі (1), (3), (5) буде нова незалежна множина 1mS + . Якщо її розмір дорівнює ( )G , то множина 1mS + (5) 77 Методи і засоби програмної інженерії Лінійні нерівності (5) відсікають уже знайдені множини Методи і засоби програмної інженерії for{k in 1..nCalls} { for{i in 1..nv} { let eps[i]:= 0.001*Uniform(-1,1); #0.001*Normal(0,0.1) } solve; display alpha_G; if (xs[1]=1 and xs[3]=1) then let ns[1]:=ns[1]+1; if (xs[1]=1 and xs[4]=1) then let ns[2]:=ns[2]+1; if (xs[2]=1 and xs[4]=1) then let ns[3]:=ns[3]+1; if (xs[2]=1 and xs[5]=1) then let ns[4]:=ns[4]+1; if (xs[3]=1 and xs[5]=1) then let ns[5]:=ns[5]+1; } display sum{i in 1..5}ns[i],ns; а для булевої задачі (4), (3) обчислювались за допомогою такого AMPL-коду: # Опис графу G для булевої задачі (4), (3) set V_G := {1,2,3,4,5,6}; # вершини графа param nv := card(V_G); # кількість вершин графа param I_G{i in 1..nv, j in 1..nv} >=0 <=1; param d{i in 1..nv} = sum{j in 1..nv} I_G[i,j]; # Опис та задання параметрів param nCalls:=100; #кількість запусків солвера param ns{i in 1..5} default 0; #кількості множин S_i param eps{i in 1..nv} default 0; # Опис булевої задачі (4), (3) var xs{i in 1..nv} binary; maximize alpha_G: sum{i in 1..nv} (xs[i]+eps[i]*xs[i]); subject to constr3 {i in 1..nv}: sum{j in 1..nv} I_G[i,j]*xs[j] <= d[i]*(1-xs[i]); option solver gurobi; # вибір солвера data; param I_G: 1 2 3 4 5 6:= 1 0 1 0 0 1 1 2 1 0 1 0 0 1 3 0 1 0 1 0 1 4 0 0 1 0 1 1 5 1 0 0 1 0 1 6 1 1 1 1 1 0; display V_G,I_G; # nCalls разів роз’язуємо задачу (4), (3) for{k in 1..nCalls} { for{i in 1..nv} { let eps[i]:= 0.001*Uniform(-1,1); #0.001*Normal(-1,1) } solve; display alpha_G; if (xs[1]=1 and xs[3]=1) then let ns[1]:=ns[1]+1; if (xs[1]=1 and xs[4]=1) then let ns[2]:=ns[2]+1; if (xs[2]=1 and xs[4]=1) then let ns[3]:=ns[3]+1; if (xs[2]=1 and xs[5]=1) then let ns[4]:=ns[4]+1; if (xs[3]=1 and xs[5]=1) then let ns[5]:=ns[5]+1; } display sum{i in 1..5}ns[i],ns; З табл. 1 видно, що частоти знаходження кожної з п'яти незалежних множин, які отримані за допомогою розв’язання задачі (4), (2), співпадають з частотами, отриманими за допомогою розв’язання задачі (4), (3). За- уважимо, що за десяти запусків солвера gurobi незалежна множина 3S жодного разу не була знайдена при нор- мальному розподілі. Із зростанням кількості запусків (100 та 1000) солвера gurobi імовірність знаходження кожної множини наближається до 1 5 (20%). 2. Алгоритм знаходження усіх максимальних незалежних множин У даному розділі розглянемо суттєво економніший спосіб для знаходження усіх максимальних незалеж- них множин вершин графа G , який за кожний послідовний запуск солвера gurobi буде або знаходити нову незалежну множину розміру ( )G , або закінчувати роботу, якщо незалежні множини розміру ( )G уже виб- рані. Він полягає у наступному. Нехай знайдено m максимальних незалежних множин , 1, , ,jS j m= і серед них немає співпадаючих. Щоб знайти нову максимальну незалежну множину, додамо до задачі (1), (2) або до задачі (1), (3) обмеження: ( ) ( ) 1 2, 1,..., . j i K i V S x G j m   − = (5) Лінійні нерівності (5) відсікають уже знайдені множини , 1, ,jS j m= , тому розв'язком задачі (1), (2), (5) або задачі (1), (3), (5) буде нова незалежна множина 1mS + . Якщо її розмір дорівнює ( )G , то множина 1mS + , тому розв’язком задачі (1), (2), (5) або задачі (1), (3), (5) буде нова незалежна множина Методи і засоби програмної інженерії for{k in 1..nCalls} { for{i in 1..nv} { let eps[i]:= 0.001*Uniform(-1,1); #0.001*Normal(0,0.1) } solve; display alpha_G; if (xs[1]=1 and xs[3]=1) then let ns[1]:=ns[1]+1; if (xs[1]=1 and xs[4]=1) then let ns[2]:=ns[2]+1; if (xs[2]=1 and xs[4]=1) then let ns[3]:=ns[3]+1; if (xs[2]=1 and xs[5]=1) then let ns[4]:=ns[4]+1; if (xs[3]=1 and xs[5]=1) then let ns[5]:=ns[5]+1; } display sum{i in 1..5}ns[i],ns; а для булевої задачі (4), (3) обчислювались за допомогою такого AMPL-коду: # Опис графу G для булевої задачі (4), (3) set V_G := {1,2,3,4,5,6}; # вершини графа param nv := card(V_G); # кількість вершин графа param I_G{i in 1..nv, j in 1..nv} >=0 <=1; param d{i in 1..nv} = sum{j in 1..nv} I_G[i,j]; # Опис та задання параметрів param nCalls:=100; #кількість запусків солвера param ns{i in 1..5} default 0; #кількості множин S_i param eps{i in 1..nv} default 0; # Опис булевої задачі (4), (3) var xs{i in 1..nv} binary; maximize alpha_G: sum{i in 1..nv} (xs[i]+eps[i]*xs[i]); subject to constr3 {i in 1..nv}: sum{j in 1..nv} I_G[i,j]*xs[j] <= d[i]*(1-xs[i]); option solver gurobi; # вибір солвера data; param I_G: 1 2 3 4 5 6:= 1 0 1 0 0 1 1 2 1 0 1 0 0 1 3 0 1 0 1 0 1 4 0 0 1 0 1 1 5 1 0 0 1 0 1 6 1 1 1 1 1 0; display V_G,I_G; # nCalls разів роз’язуємо задачу (4), (3) for{k in 1..nCalls} { for{i in 1..nv} { let eps[i]:= 0.001*Uniform(-1,1); #0.001*Normal(-1,1) } solve; display alpha_G; if (xs[1]=1 and xs[3]=1) then let ns[1]:=ns[1]+1; if (xs[1]=1 and xs[4]=1) then let ns[2]:=ns[2]+1; if (xs[2]=1 and xs[4]=1) then let ns[3]:=ns[3]+1; if (xs[2]=1 and xs[5]=1) then let ns[4]:=ns[4]+1; if (xs[3]=1 and xs[5]=1) then let ns[5]:=ns[5]+1; } display sum{i in 1..5}ns[i],ns; З табл. 1 видно, що частоти знаходження кожної з п'яти незалежних множин, які отримані за допомогою розв’язання задачі (4), (2), співпадають з частотами, отриманими за допомогою розв’язання задачі (4), (3). За- уважимо, що за десяти запусків солвера gurobi незалежна множина 3S жодного разу не була знайдена при нор- мальному розподілі. Із зростанням кількості запусків (100 та 1000) солвера gurobi імовірність знаходження кожної множини наближається до 1 5 (20%). 2. Алгоритм знаходження усіх максимальних незалежних множин У даному розділі розглянемо суттєво економніший спосіб для знаходження усіх максимальних незалеж- них множин вершин графа G , який за кожний послідовний запуск солвера gurobi буде або знаходити нову незалежну множину розміру ( )G , або закінчувати роботу, якщо незалежні множини розміру ( )G уже виб- рані. Він полягає у наступному. Нехай знайдено m максимальних незалежних множин , 1, , ,jS j m= і серед них немає співпадаючих. Щоб знайти нову максимальну незалежну множину, додамо до задачі (1), (2) або до задачі (1), (3) обмеження: ( ) ( ) 1 2, 1,..., . j i K i V S x G j m   − = (5) Лінійні нерівності (5) відсікають уже знайдені множини , 1, ,jS j m= , тому розв'язком задачі (1), (2), (5) або задачі (1), (3), (5) буде нова незалежна множина 1mS + . Якщо її розмір дорівнює ( )G , то множина 1mS + . Якщо її розмір дорівнює Методи і засоби програмної інженерії for{k in 1..nCalls} { for{i in 1..nv} { let eps[i]:= 0.001*Uniform(-1,1); #0.001*Normal(0,0.1) } solve; display alpha_G; if (xs[1]=1 and xs[3]=1) then let ns[1]:=ns[1]+1; if (xs[1]=1 and xs[4]=1) then let ns[2]:=ns[2]+1; if (xs[2]=1 and xs[4]=1) then let ns[3]:=ns[3]+1; if (xs[2]=1 and xs[5]=1) then let ns[4]:=ns[4]+1; if (xs[3]=1 and xs[5]=1) then let ns[5]:=ns[5]+1; } display sum{i in 1..5}ns[i],ns; а для булевої задачі (4), (3) обчислювались за допомогою такого AMPL-коду: # Опис графу G для булевої задачі (4), (3) set V_G := {1,2,3,4,5,6}; # вершини графа param nv := card(V_G); # кількість вершин графа param I_G{i in 1..nv, j in 1..nv} >=0 <=1; param d{i in 1..nv} = sum{j in 1..nv} I_G[i,j]; # Опис та задання параметрів param nCalls:=100; #кількість запусків солвера param ns{i in 1..5} default 0; #кількості множин S_i param eps{i in 1..nv} default 0; # Опис булевої задачі (4), (3) var xs{i in 1..nv} binary; maximize alpha_G: sum{i in 1..nv} (xs[i]+eps[i]*xs[i]); subject to constr3 {i in 1..nv}: sum{j in 1..nv} I_G[i,j]*xs[j] <= d[i]*(1-xs[i]); option solver gurobi; # вибір солвера data; param I_G: 1 2 3 4 5 6:= 1 0 1 0 0 1 1 2 1 0 1 0 0 1 3 0 1 0 1 0 1 4 0 0 1 0 1 1 5 1 0 0 1 0 1 6 1 1 1 1 1 0; display V_G,I_G; # nCalls разів роз’язуємо задачу (4), (3) for{k in 1..nCalls} { for{i in 1..nv} { let eps[i]:= 0.001*Uniform(-1,1); #0.001*Normal(-1,1) } solve; display alpha_G; if (xs[1]=1 and xs[3]=1) then let ns[1]:=ns[1]+1; if (xs[1]=1 and xs[4]=1) then let ns[2]:=ns[2]+1; if (xs[2]=1 and xs[4]=1) then let ns[3]:=ns[3]+1; if (xs[2]=1 and xs[5]=1) then let ns[4]:=ns[4]+1; if (xs[3]=1 and xs[5]=1) then let ns[5]:=ns[5]+1; } display sum{i in 1..5}ns[i],ns; З табл. 1 видно, що частоти знаходження кожної з п'яти незалежних множин, які отримані за допомогою розв’язання задачі (4), (2), співпадають з частотами, отриманими за допомогою розв’язання задачі (4), (3). За- уважимо, що за десяти запусків солвера gurobi незалежна множина 3S жодного разу не була знайдена при нор- мальному розподілі. Із зростанням кількості запусків (100 та 1000) солвера gurobi імовірність знаходження кожної множини наближається до 1 5 (20%). 2. Алгоритм знаходження усіх максимальних незалежних множин У даному розділі розглянемо суттєво економніший спосіб для знаходження усіх максимальних незалеж- них множин вершин графа G , який за кожний послідовний запуск солвера gurobi буде або знаходити нову незалежну множину розміру ( )G , або закінчувати роботу, якщо незалежні множини розміру ( )G уже виб- рані. Він полягає у наступному. Нехай знайдено m максимальних незалежних множин , 1, , ,jS j m= і серед них немає співпадаючих. Щоб знайти нову максимальну незалежну множину, додамо до задачі (1), (2) або до задачі (1), (3) обмеження: ( ) ( ) 1 2, 1,..., . j i K i V S x G j m   − = (5) Лінійні нерівності (5) відсікають уже знайдені множини , 1, ,jS j m= , тому розв'язком задачі (1), (2), (5) або задачі (1), (3), (5) буде нова незалежна множина 1mS + . Якщо її розмір дорівнює ( )G , то множина 1mS + , то множина Методи і засоби програмної інженерії for{k in 1..nCalls} { for{i in 1..nv} { let eps[i]:= 0.001*Uniform(-1,1); #0.001*Normal(0,0.1) } solve; display alpha_G; if (xs[1]=1 and xs[3]=1) then let ns[1]:=ns[1]+1; if (xs[1]=1 and xs[4]=1) then let ns[2]:=ns[2]+1; if (xs[2]=1 and xs[4]=1) then let ns[3]:=ns[3]+1; if (xs[2]=1 and xs[5]=1) then let ns[4]:=ns[4]+1; if (xs[3]=1 and xs[5]=1) then let ns[5]:=ns[5]+1; } display sum{i in 1..5}ns[i],ns; а для булевої задачі (4), (3) обчислювались за допомогою такого AMPL-коду: # Опис графу G для булевої задачі (4), (3) set V_G := {1,2,3,4,5,6}; # вершини графа param nv := card(V_G); # кількість вершин графа param I_G{i in 1..nv, j in 1..nv} >=0 <=1; param d{i in 1..nv} = sum{j in 1..nv} I_G[i,j]; # Опис та задання параметрів param nCalls:=100; #кількість запусків солвера param ns{i in 1..5} default 0; #кількості множин S_i param eps{i in 1..nv} default 0; # Опис булевої задачі (4), (3) var xs{i in 1..nv} binary; maximize alpha_G: sum{i in 1..nv} (xs[i]+eps[i]*xs[i]); subject to constr3 {i in 1..nv}: sum{j in 1..nv} I_G[i,j]*xs[j] <= d[i]*(1-xs[i]); option solver gurobi; # вибір солвера data; param I_G: 1 2 3 4 5 6:= 1 0 1 0 0 1 1 2 1 0 1 0 0 1 3 0 1 0 1 0 1 4 0 0 1 0 1 1 5 1 0 0 1 0 1 6 1 1 1 1 1 0; display V_G,I_G; # nCalls разів роз’язуємо задачу (4), (3) for{k in 1..nCalls} { for{i in 1..nv} { let eps[i]:= 0.001*Uniform(-1,1); #0.001*Normal(-1,1) } solve; display alpha_G; if (xs[1]=1 and xs[3]=1) then let ns[1]:=ns[1]+1; if (xs[1]=1 and xs[4]=1) then let ns[2]:=ns[2]+1; if (xs[2]=1 and xs[4]=1) then let ns[3]:=ns[3]+1; if (xs[2]=1 and xs[5]=1) then let ns[4]:=ns[4]+1; if (xs[3]=1 and xs[5]=1) then let ns[5]:=ns[5]+1; } display sum{i in 1..5}ns[i],ns; З табл. 1 видно, що частоти знаходження кожної з п'яти незалежних множин, які отримані за допомогою розв’язання задачі (4), (2), співпадають з частотами, отриманими за допомогою розв’язання задачі (4), (3). За- уважимо, що за десяти запусків солвера gurobi незалежна множина 3S жодного разу не була знайдена при нор- мальному розподілі. Із зростанням кількості запусків (100 та 1000) солвера gurobi імовірність знаходження кожної множини наближається до 1 5 (20%). 2. Алгоритм знаходження усіх максимальних незалежних множин У даному розділі розглянемо суттєво економніший спосіб для знаходження усіх максимальних незалеж- них множин вершин графа G , який за кожний послідовний запуск солвера gurobi буде або знаходити нову незалежну множину розміру ( )G , або закінчувати роботу, якщо незалежні множини розміру ( )G уже виб- рані. Він полягає у наступному. Нехай знайдено m максимальних незалежних множин , 1, , ,jS j m= і серед них немає співпадаючих. Щоб знайти нову максимальну незалежну множину, додамо до задачі (1), (2) або до задачі (1), (3) обмеження: ( ) ( ) 1 2, 1,..., . j i K i V S x G j m   − = (5) Лінійні нерівності (5) відсікають уже знайдені множини , 1, ,jS j m= , тому розв'язком задачі (1), (2), (5) або задачі (1), (3), (5) буде нова незалежна множина 1mS + . Якщо її розмір дорівнює ( )G , то множина 1mS + буде новою максимальною незалежною множиною, і її можна додати до списку множин [Введите текст] Методи і засоби програмної інженерії [Введите текст] буде новою максимальною незалежною множиною, і її можна додати до списку множин , 1, ,jS j m= . Якщо розмір множини 1mS + менший ніж ( )G , то це значить, що список множин , 1, ,jS j m= містить усі максимальні незалежні множини для графа G . Вказаний алгоритм знаходження nCalls розв'язків задачі (1), (2), (5) або задачі (1), (3), (5) програмно ре- алізований мовою AMPL. Стартовий список максимальних незалежних множин містить одну із незалежних множин розміру ( )G , яка знайдена як розв'язок задачі (1), (2). Для графа 6W та 100nCalls = послідовних запусків солвера gurobi алгоритм на основі задачі (1), (2), (5) реалізує AMPL-код: # Опис графу G для булевої задачі (1), (2), (5) set V_G := {1,2,3,4,5,6}; # вершини графа set E_G:={(1,2),(1,5),(1,6),(2,3),(2,6),(3,4),(3,6),(4,5),(4,6),(5,6)}; # ребра графа display V_G,E_G; # Опис та задання параметрів param nCalls:=100; #кількість запусків солвера param alphaG1; set nS default {}; set S{nS} default {}; # Опис булевої задачі (1), (2), (5) var xs{i in 1..card(V_G)} binary; maximize alpha_G: sum{i in 1..card(V_G)}xs[i]; subject to con2 {(i,j) in E_G}: xs[i]+xs[j] <= 1; subject to con5 {i in nS}: sum{j in S[i]} xs[j] <= alphaG1; option solver gurobi; # вибір солвера # # nCalls разів розв’зуємо задачу (1), (2), (5) solve; display alpha_G; let alphaG1:=alpha_G-0.5; let nS:={1}; let S[1] := {j in V_G: xs[j]>=0.99}; for{i in 2..nCalls} { solve; display alpha_G; if (alpha_G<alphaG1) then break; let nS:=nS union {i}; let S[i] := {j in V_G: xs[j]>=0.99}; } display nCalls,S; # друкуємо кількість запусків солвера та отримані максимальні незалежні множини За п'ять запусків солвера gurobi цей AMPL-код знаходить усі максимальні незалежні множині графа 6W у такому порядку: S[1]={1,3}, S[2]={2,4}, S[3]={1,4}, S[4]={3,5}, S[5]={2,5}. Для його налаштування на пошук максимальних незалежних множин відповідного графа достатньо в AMPL-коді перших два оператори замінити на оператори з описом множини вершин та множини ребер цього графа. Алгоритм знаходження nCalls розв'язків задачі (1), (3), (5) для графа 6W та 100nCalls = послідовних запусків солвера gurobi реалізує такий AMPL-код: # Опис графу G для булевої задачі (1), (3), (5) set V_G := {1,2,3,4,5,6}; # вершини графа param nv := card(V_G); # кількість вершин графа param I_G{i in 1..nv,j in 1..nv} >=0 <=1; param d{i in 1..nv} = sum{j in 1..nv} I_G[i,j]; # Опис та задання параметрів param nCalls:=100; #кількість запусків солвера param alphaG1; set nS default {}; set S{nS} default {}; # Опис булевої задачі (1), (3), (5) var xs{i in 1..nv} binary; maximize alpha_G: sum{i in 1..nv} xs[i]; subject to constr3 {i in 1..nv}: sum{j in 1..nv} I_G[i,j]*xs[j] <= d[i]*(1-xs[i]); subject to constr5 {i in nS}: sum{j in S[i]} xs[j] <= alphaG1; option solver gurobi; # вибір солвера # Задання матриці суміжності data; param I_G: 1 2 3 4 5 6:= 1 0 1 0 0 1 1 2 1 0 1 0 0 1 3 0 1 0 1 0 1 4 0 0 1 0 1 1 5 1 0 0 1 0 1 6 1 1 1 1 1 0; display V_G,I_G; # nCalls разів розв’зуємо задачу (1), (3), (5) solve; display alpha_G; let alphaG1:=alpha_G-0.5; let nS:={1}; let S[1] := {j in V_G: xs[j]>=0.99}; . Якщо розмір множини [Введите текст] Методи і засоби програмної інженерії [Введите текст] буде новою максимальною незалежною множиною, і її можна додати до списку множин , 1, ,jS j m= . Якщо розмір множини 1mS + менший ніж ( )G , то це значить, що список множин , 1, ,jS j m= містить усі максимальні незалежні множини для графа G . Вказаний алгоритм знаходження nCalls розв'язків задачі (1), (2), (5) або задачі (1), (3), (5) програмно ре- алізований мовою AMPL. Стартовий список максимальних незалежних множин містить одну із незалежних множин розміру ( )G , яка знайдена як розв'язок задачі (1), (2). Для графа 6W та 100nCalls = послідовних запусків солвера gurobi алгоритм на основі задачі (1), (2), (5) реалізує AMPL-код: # Опис графу G для булевої задачі (1), (2), (5) set V_G := {1,2,3,4,5,6}; # вершини графа set E_G:={(1,2),(1,5),(1,6),(2,3),(2,6),(3,4),(3,6),(4,5),(4,6),(5,6)}; # ребра графа display V_G,E_G; # Опис та задання параметрів param nCalls:=100; #кількість запусків солвера param alphaG1; set nS default {}; set S{nS} default {}; # Опис булевої задачі (1), (2), (5) var xs{i in 1..card(V_G)} binary; maximize alpha_G: sum{i in 1..card(V_G)}xs[i]; subject to con2 {(i,j) in E_G}: xs[i]+xs[j] <= 1; subject to con5 {i in nS}: sum{j in S[i]} xs[j] <= alphaG1; option solver gurobi; # вибір солвера # # nCalls разів розв’зуємо задачу (1), (2), (5) solve; display alpha_G; let alphaG1:=alpha_G-0.5; let nS:={1}; let S[1] := {j in V_G: xs[j]>=0.99}; for{i in 2..nCalls} { solve; display alpha_G; if (alpha_G<alphaG1) then break; let nS:=nS union {i}; let S[i] := {j in V_G: xs[j]>=0.99}; } display nCalls,S; # друкуємо кількість запусків солвера та отримані максимальні незалежні множини За п'ять запусків солвера gurobi цей AMPL-код знаходить усі максимальні незалежні множині графа 6W у такому порядку: S[1]={1,3}, S[2]={2,4}, S[3]={1,4}, S[4]={3,5}, S[5]={2,5}. Для його налаштування на пошук максимальних незалежних множин відповідного графа достатньо в AMPL-коді перших два оператори замінити на оператори з описом множини вершин та множини ребер цього графа. Алгоритм знаходження nCalls розв'язків задачі (1), (3), (5) для графа 6W та 100nCalls = послідовних запусків солвера gurobi реалізує такий AMPL-код: # Опис графу G для булевої задачі (1), (3), (5) set V_G := {1,2,3,4,5,6}; # вершини графа param nv := card(V_G); # кількість вершин графа param I_G{i in 1..nv,j in 1..nv} >=0 <=1; param d{i in 1..nv} = sum{j in 1..nv} I_G[i,j]; # Опис та задання параметрів param nCalls:=100; #кількість запусків солвера param alphaG1; set nS default {}; set S{nS} default {}; # Опис булевої задачі (1), (3), (5) var xs{i in 1..nv} binary; maximize alpha_G: sum{i in 1..nv} xs[i]; subject to constr3 {i in 1..nv}: sum{j in 1..nv} I_G[i,j]*xs[j] <= d[i]*(1-xs[i]); subject to constr5 {i in nS}: sum{j in S[i]} xs[j] <= alphaG1; option solver gurobi; # вибір солвера # Задання матриці суміжності data; param I_G: 1 2 3 4 5 6:= 1 0 1 0 0 1 1 2 1 0 1 0 0 1 3 0 1 0 1 0 1 4 0 0 1 0 1 1 5 1 0 0 1 0 1 6 1 1 1 1 1 0; display V_G,I_G; # nCalls разів розв’зуємо задачу (1), (3), (5) solve; display alpha_G; let alphaG1:=alpha_G-0.5; let nS:={1}; let S[1] := {j in V_G: xs[j]>=0.99}; менший ніж [Введите текст] Методи і засоби програмної інженерії [Введите текст] буде новою максимальною незалежною множиною, і її можна додати до списку множин , 1, ,jS j m= . Якщо розмір множини 1mS + менший ніж ( )G , то це значить, що список множин , 1, ,jS j m= містить усі максимальні незалежні множини для графа G . Вказаний алгоритм знаходження nCalls розв'язків задачі (1), (2), (5) або задачі (1), (3), (5) програмно ре- алізований мовою AMPL. Стартовий список максимальних незалежних множин містить одну із незалежних множин розміру ( )G , яка знайдена як розв'язок задачі (1), (2). Для графа 6W та 100nCalls = послідовних запусків солвера gurobi алгоритм на основі задачі (1), (2), (5) реалізує AMPL-код: # Опис графу G для булевої задачі (1), (2), (5) set V_G := {1,2,3,4,5,6}; # вершини графа set E_G:={(1,2),(1,5),(1,6),(2,3),(2,6),(3,4),(3,6),(4,5),(4,6),(5,6)}; # ребра графа display V_G,E_G; # Опис та задання параметрів param nCalls:=100; #кількість запусків солвера param alphaG1; set nS default {}; set S{nS} default {}; # Опис булевої задачі (1), (2), (5) var xs{i in 1..card(V_G)} binary; maximize alpha_G: sum{i in 1..card(V_G)}xs[i]; subject to con2 {(i,j) in E_G}: xs[i]+xs[j] <= 1; subject to con5 {i in nS}: sum{j in S[i]} xs[j] <= alphaG1; option solver gurobi; # вибір солвера # # nCalls разів розв’зуємо задачу (1), (2), (5) solve; display alpha_G; let alphaG1:=alpha_G-0.5; let nS:={1}; let S[1] := {j in V_G: xs[j]>=0.99}; for{i in 2..nCalls} { solve; display alpha_G; if (alpha_G<alphaG1) then break; let nS:=nS union {i}; let S[i] := {j in V_G: xs[j]>=0.99}; } display nCalls,S; # друкуємо кількість запусків солвера та отримані максимальні незалежні множини За п'ять запусків солвера gurobi цей AMPL-код знаходить усі максимальні незалежні множині графа 6W у такому порядку: S[1]={1,3}, S[2]={2,4}, S[3]={1,4}, S[4]={3,5}, S[5]={2,5}. Для його налаштування на пошук максимальних незалежних множин відповідного графа достатньо в AMPL-коді перших два оператори замінити на оператори з описом множини вершин та множини ребер цього графа. Алгоритм знаходження nCalls розв'язків задачі (1), (3), (5) для графа 6W та 100nCalls = послідовних запусків солвера gurobi реалізує такий AMPL-код: # Опис графу G для булевої задачі (1), (3), (5) set V_G := {1,2,3,4,5,6}; # вершини графа param nv := card(V_G); # кількість вершин графа param I_G{i in 1..nv,j in 1..nv} >=0 <=1; param d{i in 1..nv} = sum{j in 1..nv} I_G[i,j]; # Опис та задання параметрів param nCalls:=100; #кількість запусків солвера param alphaG1; set nS default {}; set S{nS} default {}; # Опис булевої задачі (1), (3), (5) var xs{i in 1..nv} binary; maximize alpha_G: sum{i in 1..nv} xs[i]; subject to constr3 {i in 1..nv}: sum{j in 1..nv} I_G[i,j]*xs[j] <= d[i]*(1-xs[i]); subject to constr5 {i in nS}: sum{j in S[i]} xs[j] <= alphaG1; option solver gurobi; # вибір солвера # Задання матриці суміжності data; param I_G: 1 2 3 4 5 6:= 1 0 1 0 0 1 1 2 1 0 1 0 0 1 3 0 1 0 1 0 1 4 0 0 1 0 1 1 5 1 0 0 1 0 1 6 1 1 1 1 1 0; display V_G,I_G; # nCalls разів розв’зуємо задачу (1), (3), (5) solve; display alpha_G; let alphaG1:=alpha_G-0.5; let nS:={1}; let S[1] := {j in V_G: xs[j]>=0.99}; , то це значить, що список множин [Введите текст] Методи і засоби програмної інженерії [Введите текст] буде новою максимальною незалежною множиною, і її можна додати до списку множин , 1, ,jS j m= . Якщо розмір множини 1mS + менший ніж ( )G , то це значить, що список множин , 1, ,jS j m= містить усі максимальні незалежні множини для графа G . Вказаний алгоритм знаходження nCalls розв'язків задачі (1), (2), (5) або задачі (1), (3), (5) програмно ре- алізований мовою AMPL. Стартовий список максимальних незалежних множин містить одну із незалежних множин розміру ( )G , яка знайдена як розв'язок задачі (1), (2). Для графа 6W та 100nCalls = послідовних запусків солвера gurobi алгоритм на основі задачі (1), (2), (5) реалізує AMPL-код: # Опис графу G для булевої задачі (1), (2), (5) set V_G := {1,2,3,4,5,6}; # вершини графа set E_G:={(1,2),(1,5),(1,6),(2,3),(2,6),(3,4),(3,6),(4,5),(4,6),(5,6)}; # ребра графа display V_G,E_G; # Опис та задання параметрів param nCalls:=100; #кількість запусків солвера param alphaG1; set nS default {}; set S{nS} default {}; # Опис булевої задачі (1), (2), (5) var xs{i in 1..card(V_G)} binary; maximize alpha_G: sum{i in 1..card(V_G)}xs[i]; subject to con2 {(i,j) in E_G}: xs[i]+xs[j] <= 1; subject to con5 {i in nS}: sum{j in S[i]} xs[j] <= alphaG1; option solver gurobi; # вибір солвера # # nCalls разів розв’зуємо задачу (1), (2), (5) solve; display alpha_G; let alphaG1:=alpha_G-0.5; let nS:={1}; let S[1] := {j in V_G: xs[j]>=0.99}; for{i in 2..nCalls} { solve; display alpha_G; if (alpha_G<alphaG1) then break; let nS:=nS union {i}; let S[i] := {j in V_G: xs[j]>=0.99}; } display nCalls,S; # друкуємо кількість запусків солвера та отримані максимальні незалежні множини За п'ять запусків солвера gurobi цей AMPL-код знаходить усі максимальні незалежні множині графа 6W у такому порядку: S[1]={1,3}, S[2]={2,4}, S[3]={1,4}, S[4]={3,5}, S[5]={2,5}. Для його налаштування на пошук максимальних незалежних множин відповідного графа достатньо в AMPL-коді перших два оператори замінити на оператори з описом множини вершин та множини ребер цього графа. Алгоритм знаходження nCalls розв'язків задачі (1), (3), (5) для графа 6W та 100nCalls = послідовних запусків солвера gurobi реалізує такий AMPL-код: # Опис графу G для булевої задачі (1), (3), (5) set V_G := {1,2,3,4,5,6}; # вершини графа param nv := card(V_G); # кількість вершин графа param I_G{i in 1..nv,j in 1..nv} >=0 <=1; param d{i in 1..nv} = sum{j in 1..nv} I_G[i,j]; # Опис та задання параметрів param nCalls:=100; #кількість запусків солвера param alphaG1; set nS default {}; set S{nS} default {}; # Опис булевої задачі (1), (3), (5) var xs{i in 1..nv} binary; maximize alpha_G: sum{i in 1..nv} xs[i]; subject to constr3 {i in 1..nv}: sum{j in 1..nv} I_G[i,j]*xs[j] <= d[i]*(1-xs[i]); subject to constr5 {i in nS}: sum{j in S[i]} xs[j] <= alphaG1; option solver gurobi; # вибір солвера # Задання матриці суміжності data; param I_G: 1 2 3 4 5 6:= 1 0 1 0 0 1 1 2 1 0 1 0 0 1 3 0 1 0 1 0 1 4 0 0 1 0 1 1 5 1 0 0 1 0 1 6 1 1 1 1 1 0; display V_G,I_G; # nCalls разів розв’зуємо задачу (1), (3), (5) solve; display alpha_G; let alphaG1:=alpha_G-0.5; let nS:={1}; let S[1] := {j in V_G: xs[j]>=0.99}; містить усі максимальні незалежні множини для графа G. Вказаний алгоритм знаходження nCalls розв’язків задачі (1), (2), (5) або задачі (1), (3), (5) програмно реалізований мовою AMPL. Стартовий список максимальних незалежних множин містить одну із незалежних множин розміру [Введите текст] Методи і засоби програмної інженерії [Введите текст] буде новою максимальною незалежною множиною, і її можна додати до списку множин , 1, ,jS j m= . Якщо розмір множини 1mS + менший ніж ( )G , то це значить, що список множин , 1, ,jS j m= містить усі максимальні незалежні множини для графа G . Вказаний алгоритм знаходження nCalls розв'язків задачі (1), (2), (5) або задачі (1), (3), (5) програмно ре- алізований мовою AMPL. Стартовий список максимальних незалежних множин містить одну із незалежних множин розміру ( )G , яка знайдена як розв'язок задачі (1), (2). Для графа 6W та 100nCalls = послідовних запусків солвера gurobi алгоритм на основі задачі (1), (2), (5) реалізує AMPL-код: # Опис графу G для булевої задачі (1), (2), (5) set V_G := {1,2,3,4,5,6}; # вершини графа set E_G:={(1,2),(1,5),(1,6),(2,3),(2,6),(3,4),(3,6),(4,5),(4,6),(5,6)}; # ребра графа display V_G,E_G; # Опис та задання параметрів param nCalls:=100; #кількість запусків солвера param alphaG1; set nS default {}; set S{nS} default {}; # Опис булевої задачі (1), (2), (5) var xs{i in 1..card(V_G)} binary; maximize alpha_G: sum{i in 1..card(V_G)}xs[i]; subject to con2 {(i,j) in E_G}: xs[i]+xs[j] <= 1; subject to con5 {i in nS}: sum{j in S[i]} xs[j] <= alphaG1; option solver gurobi; # вибір солвера # # nCalls разів розв’зуємо задачу (1), (2), (5) solve; display alpha_G; let alphaG1:=alpha_G-0.5; let nS:={1}; let S[1] := {j in V_G: xs[j]>=0.99}; for{i in 2..nCalls} { solve; display alpha_G; if (alpha_G<alphaG1) then break; let nS:=nS union {i}; let S[i] := {j in V_G: xs[j]>=0.99}; } display nCalls,S; # друкуємо кількість запусків солвера та отримані максимальні незалежні множини За п'ять запусків солвера gurobi цей AMPL-код знаходить усі максимальні незалежні множині графа 6W у такому порядку: S[1]={1,3}, S[2]={2,4}, S[3]={1,4}, S[4]={3,5}, S[5]={2,5}. Для його налаштування на пошук максимальних незалежних множин відповідного графа достатньо в AMPL-коді перших два оператори замінити на оператори з описом множини вершин та множини ребер цього графа. Алгоритм знаходження nCalls розв'язків задачі (1), (3), (5) для графа 6W та 100nCalls = послідовних запусків солвера gurobi реалізує такий AMPL-код: # Опис графу G для булевої задачі (1), (3), (5) set V_G := {1,2,3,4,5,6}; # вершини графа param nv := card(V_G); # кількість вершин графа param I_G{i in 1..nv,j in 1..nv} >=0 <=1; param d{i in 1..nv} = sum{j in 1..nv} I_G[i,j]; # Опис та задання параметрів param nCalls:=100; #кількість запусків солвера param alphaG1; set nS default {}; set S{nS} default {}; # Опис булевої задачі (1), (3), (5) var xs{i in 1..nv} binary; maximize alpha_G: sum{i in 1..nv} xs[i]; subject to constr3 {i in 1..nv}: sum{j in 1..nv} I_G[i,j]*xs[j] <= d[i]*(1-xs[i]); subject to constr5 {i in nS}: sum{j in S[i]} xs[j] <= alphaG1; option solver gurobi; # вибір солвера # Задання матриці суміжності data; param I_G: 1 2 3 4 5 6:= 1 0 1 0 0 1 1 2 1 0 1 0 0 1 3 0 1 0 1 0 1 4 0 0 1 0 1 1 5 1 0 0 1 0 1 6 1 1 1 1 1 0; display V_G,I_G; # nCalls разів розв’зуємо задачу (1), (3), (5) solve; display alpha_G; let alphaG1:=alpha_G-0.5; let nS:={1}; let S[1] := {j in V_G: xs[j]>=0.99}; , яка знайдена як розв’язок задачі (1), (2). Для графа [Введите текст] Методи і засоби програмної інженерії [Введите текст] буде новою максимальною незалежною множиною, і її можна додати до списку множин , 1, ,jS j m= . Якщо розмір множини 1mS + менший ніж ( )G , то це значить, що список множин , 1, ,jS j m= містить усі максимальні незалежні множини для графа G . Вказаний алгоритм знаходження nCalls розв'язків задачі (1), (2), (5) або задачі (1), (3), (5) програмно ре- алізований мовою AMPL. Стартовий список максимальних незалежних множин містить одну із незалежних множин розміру ( )G , яка знайдена як розв'язок задачі (1), (2). Для графа 6W та 100nCalls = послідовних запусків солвера gurobi алгоритм на основі задачі (1), (2), (5) реалізує AMPL-код: # Опис графу G для булевої задачі (1), (2), (5) set V_G := {1,2,3,4,5,6}; # вершини графа set E_G:={(1,2),(1,5),(1,6),(2,3),(2,6),(3,4),(3,6),(4,5),(4,6),(5,6)}; # ребра графа display V_G,E_G; # Опис та задання параметрів param nCalls:=100; #кількість запусків солвера param alphaG1; set nS default {}; set S{nS} default {}; # Опис булевої задачі (1), (2), (5) var xs{i in 1..card(V_G)} binary; maximize alpha_G: sum{i in 1..card(V_G)}xs[i]; subject to con2 {(i,j) in E_G}: xs[i]+xs[j] <= 1; subject to con5 {i in nS}: sum{j in S[i]} xs[j] <= alphaG1; option solver gurobi; # вибір солвера # # nCalls разів розв’зуємо задачу (1), (2), (5) solve; display alpha_G; let alphaG1:=alpha_G-0.5; let nS:={1}; let S[1] := {j in V_G: xs[j]>=0.99}; for{i in 2..nCalls} { solve; display alpha_G; if (alpha_G<alphaG1) then break; let nS:=nS union {i}; let S[i] := {j in V_G: xs[j]>=0.99}; } display nCalls,S; # друкуємо кількість запусків солвера та отримані максимальні незалежні множини За п'ять запусків солвера gurobi цей AMPL-код знаходить усі максимальні незалежні множині графа 6W у такому порядку: S[1]={1,3}, S[2]={2,4}, S[3]={1,4}, S[4]={3,5}, S[5]={2,5}. Для його налаштування на пошук максимальних незалежних множин відповідного графа достатньо в AMPL-коді перших два оператори замінити на оператори з описом множини вершин та множини ребер цього графа. Алгоритм знаходження nCalls розв'язків задачі (1), (3), (5) для графа 6W та 100nCalls = послідовних запусків солвера gurobi реалізує такий AMPL-код: # Опис графу G для булевої задачі (1), (3), (5) set V_G := {1,2,3,4,5,6}; # вершини графа param nv := card(V_G); # кількість вершин графа param I_G{i in 1..nv,j in 1..nv} >=0 <=1; param d{i in 1..nv} = sum{j in 1..nv} I_G[i,j]; # Опис та задання параметрів param nCalls:=100; #кількість запусків солвера param alphaG1; set nS default {}; set S{nS} default {}; # Опис булевої задачі (1), (3), (5) var xs{i in 1..nv} binary; maximize alpha_G: sum{i in 1..nv} xs[i]; subject to constr3 {i in 1..nv}: sum{j in 1..nv} I_G[i,j]*xs[j] <= d[i]*(1-xs[i]); subject to constr5 {i in nS}: sum{j in S[i]} xs[j] <= alphaG1; option solver gurobi; # вибір солвера # Задання матриці суміжності data; param I_G: 1 2 3 4 5 6:= 1 0 1 0 0 1 1 2 1 0 1 0 0 1 3 0 1 0 1 0 1 4 0 0 1 0 1 1 5 1 0 0 1 0 1 6 1 1 1 1 1 0; display V_G,I_G; # nCalls разів розв’зуємо задачу (1), (3), (5) solve; display alpha_G; let alphaG1:=alpha_G-0.5; let nS:={1}; let S[1] := {j in V_G: xs[j]>=0.99}; та nCalls = 100 послідовних за- пусків солвера gurobi алгоритм на основі задачі (1), (2), (5) реалізує AMPL-код: # Опис графу G для булевої задачі (1), (2), (5) set V_G := {1,2,3,4,5,6}; # вершини графа set E_G:={(1,2),(1,5),(1,6),(2,3),(2,6),(3,4),(3,6),(4,5),(4,6),(5,6)}; # ребра графа display V_G,E_G; # Опис та задання параметрів param nCalls:=100; #кількість запусків солвера param alphaG1; set nS default {}; set S{nS} default {}; # Опис булевої задачі (1), (2), (5) var xs{i in 1..card(V_G)} binary; maximize alpha_G: sum{i in 1..card(V_G)}xs[i]; subject to con2 {(i,j) in E_G}: xs[i]+xs[j] <= 1; subject to con5 {i in nS}: sum{j in S[i]} xs[j] <= alphaG1; option solver gurobi; # вибір солвера # # nCalls разів розв’зуємо задачу (1), (2), (5) solve; display alpha_G; let alphaG1:=alpha_G-0.5; let nS:={1}; let S[1] := {j in V_G: xs[j]>=0.99}; for{i in 2..nCalls} { solve; display alpha_G; if (alpha_G<alphaG1) then break; let nS:=nS union {i}; let S[i] := {j in V_G: xs[j]>=0.99}; } display nCalls,S; # друкуємо кількість запусків солвера та отримані макси- мальні незалежні множини За п’ять запусків солвера gurobi цей AMPL-код знаходить усі максимальні незалежні множині графа Методи і засоби програмної інженерії – уточнити постановки задачі про максимальну незалежну множину, подані в [3], і надати більш ефе- ктивні коди мовою AMPL для знаходження усіх максимальних незалежних множин і максимальної суми неза- лежних множин вершин неорієнтованого графа. 1. Булеві задачі для знаходження числа незалежності та їх властивості Множину вершин графа G називають незалежною, якщо ніякі дві вершини цієї множини не є суміжни- ми (не з'єднані ребром). Індукований цією множиною підграф складається з ізольованих вершин, їх кількість визначає розмір незалежної множини вершин графа. Оптимізаційна задача про максимальну незалежну множи- ну формулюється таким чином: у заданому неорієнтованому графі G без петель потрібно знайти незалежну множину максимального розміру. Цей розмір називають числом незалежності або числом внутрішньої стійкості і позначають ( )G . Задача знаходження числа незалежності ( )G належить до класу NP-повних задач [4, 5]. Задача про максимальну незалежну множину тісно пов'язана з задачею знаходження хроматичного числа ( )G – найменшої кількості різних кольорів, якими можна розфарбувати вершини графа G таким чином, щоб ніякі дві суміжні вершини не були розфарбовані однаково. В.Г. Візинг та Г.С. Плесневич встановили [6], що задачу знаходження хроматичного числа можна звести до ітеративної послідовності задач знаходження числа незалежності графів, отриманих як декартів добуток повних графів та копій графа G . Нехай  0,1ix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в незалеж- ну множину вершин графа ( ( ), ( ))G V G E G= , і нулю – в протилежному випадку. Тут ( )V G – множина вершин графа G , ( )E G – множина його ребер. Щоб знайти число незалежності ( )G , достатньо знайти один із розв'яз- ків задачі булевого лінійного програмуваннях [7]:  0,1 ( ) ( ) max i ix i V G G x   =  (1) за обмежень 1, ( , ) ( ).i jx x i j E G+   (2) Задача (1), (2) містить ( )V G булевих змінних та ( )E G обмежень у формі лінійних нерівностей. Обмеження (2) означають, що коли у графі G вершини i та j з'єднані ребром, то тільки одна з них буде належати неза- лежній множині вершин графа G . Задача (1), (2) може бути переформульована у вигляді задачі булевого лінійного програмування, яка ви- користовується для опису максимального k-плексу [8]. Для цього достатньо обмеження (2) замінити на такі: ( ) ( ) ( )1 , .j i i j i x d x i V G   −   (3) Задача (1), (3) містить ( )V G булевих змінних та ( )V G обмежень у формі лінійних нерівностей. Тут граф G представлено у формі ( ( ), ( ))G V G G=  , де  ( ) ( ), 1, ,G i i n =  = , а ( )i – кінцеві вершини тих дуг, у яких початковою є вершина i , яка має ступінь ( )id i=  . Обмеження (3) означають, що коли вершина належить незалежній множині вершин графа G , то жодна суміжна з нею вершина не може належати цій незалежній множині. В задачах (1), (3) кількість лінійних обмежень буде значно меншою, ніж у задачі (1), (2), для графів з великою кількістю ребер. Число незалежності ( )G визначається однозначно, але йому може відповідати багато максимальних не- залежних множин графа G . Так, наприклад, граф 6W (має форму колеса на основі 5C , циклу з п’яти вершин), множину ребер та матрицю суміжності якого наведено на рис. 1, містить п'ять незалежних множин розміру 6( ) 2W = . На рис. 1 наведено ці множини:  1 1,3S = ,  2 1,4S = ,  3 2,4S = ,  4 2,5S = ,  5 3,5S = . Вершини, які входять в них, позначено чорним кольором. у такому порядку: S[1]={1,3}, S[2]={2,4}, S[3]={1,4}, S[4]={3,5}, S[5]={2,5}. Для його налаштування на пошук максимальних незалежних множин відповідного графа достатньо в AMPL-коді перших два оператори замінити на оператори з описом множини вершин та множини ребер цього графа. Алгоритм знаходження nCalls розв’язків задачі (1), (3), (5) для графа Методи і засоби програмної інженерії – уточнити постановки задачі про максимальну незалежну множину, подані в [3], і надати більш ефе- ктивні коди мовою AMPL для знаходження усіх максимальних незалежних множин і максимальної суми неза- лежних множин вершин неорієнтованого графа. 1. Булеві задачі для знаходження числа незалежності та їх властивості Множину вершин графа G називають незалежною, якщо ніякі дві вершини цієї множини не є суміжни- ми (не з'єднані ребром). Індукований цією множиною підграф складається з ізольованих вершин, їх кількість визначає розмір незалежної множини вершин графа. Оптимізаційна задача про максимальну незалежну множи- ну формулюється таким чином: у заданому неорієнтованому графі G без петель потрібно знайти незалежну множину максимального розміру. Цей розмір називають числом незалежності або числом внутрішньої стійкості і позначають ( )G . Задача знаходження числа незалежності ( )G належить до класу NP-повних задач [4, 5]. Задача про максимальну незалежну множину тісно пов'язана з задачею знаходження хроматичного числа ( )G – найменшої кількості різних кольорів, якими можна розфарбувати вершини графа G таким чином, щоб ніякі дві суміжні вершини не були розфарбовані однаково. В.Г. Візинг та Г.С. Плесневич встановили [6], що задачу знаходження хроматичного числа можна звести до ітеративної послідовності задач знаходження числа незалежності графів, отриманих як декартів добуток повних графів та копій графа G . Нехай  0,1ix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в незалеж- ну множину вершин графа ( ( ), ( ))G V G E G= , і нулю – в протилежному випадку. Тут ( )V G – множина вершин графа G , ( )E G – множина його ребер. Щоб знайти число незалежності ( )G , достатньо знайти один із розв'яз- ків задачі булевого лінійного програмуваннях [7]:  0,1 ( ) ( ) max i ix i V G G x   =  (1) за обмежень 1, ( , ) ( ).i jx x i j E G+   (2) Задача (1), (2) містить ( )V G булевих змінних та ( )E G обмежень у формі лінійних нерівностей. Обмеження (2) означають, що коли у графі G вершини i та j з'єднані ребром, то тільки одна з них буде належати неза- лежній множині вершин графа G . Задача (1), (2) може бути переформульована у вигляді задачі булевого лінійного програмування, яка ви- користовується для опису максимального k-плексу [8]. Для цього достатньо обмеження (2) замінити на такі: ( ) ( ) ( )1 , .j i i j i x d x i V G   −   (3) Задача (1), (3) містить ( )V G булевих змінних та ( )V G обмежень у формі лінійних нерівностей. Тут граф G представлено у формі ( ( ), ( ))G V G G=  , де  ( ) ( ), 1, ,G i i n =  = , а ( )i – кінцеві вершини тих дуг, у яких початковою є вершина i , яка має ступінь ( )id i=  . Обмеження (3) означають, що коли вершина належить незалежній множині вершин графа G , то жодна суміжна з нею вершина не може належати цій незалежній множині. В задачах (1), (3) кількість лінійних обмежень буде значно меншою, ніж у задачі (1), (2), для графів з великою кількістю ребер. Число незалежності ( )G визначається однозначно, але йому може відповідати багато максимальних не- залежних множин графа G . Так, наприклад, граф 6W (має форму колеса на основі 5C , циклу з п’яти вершин), множину ребер та матрицю суміжності якого наведено на рис. 1, містить п'ять незалежних множин розміру 6( ) 2W = . На рис. 1 наведено ці множини:  1 1,3S = ,  2 1,4S = ,  3 2,4S = ,  4 2,5S = ,  5 3,5S = . Вершини, які входять в них, позначено чорним кольором. та nCalls = 100 послідовних запусків солвера gurobi реалізує такий AMPL-код: # Опис графу G для булевої задачі (1), (3), (5) set V_G := {1,2,3,4,5,6}; # вершини графа param nv := card(V_G); # кількість вершин графа param I_G{i in 1..nv,j in 1..nv} >=0 <=1; param d{i in 1..nv} = sum{j in 1..nv} I_G[i,j]; # Опис та задання параметрів param nCalls:=100; #кількість запусків солвера param alphaG1; set nS default {}; set S{nS} default {}; # Опис булевої задачі (1), (3), (5) var xs{i in 1..nv} binary; maximize alpha_G: sum{i in 1..nv} xs[i]; subject to constr3 {i in 1..nv}: sum{j in 1..nv} I_G[i,j]*xs[j] <= d[i]*(1- xs[i]); 78 Методи і засоби програмної інженерії subject to constr5 {i in nS}: sum{j in S[i]} xs[j] <= alphaG1; option solver gurobi; # вибір солвера # Задання матриці суміжності data; param I_G: 1 2 3 4 5 6:= 1 0 1 0 0 1 1 2 1 0 1 0 0 1 3 0 1 0 1 0 1 4 0 0 1 0 1 1 5 1 0 0 1 0 1 6 1 1 1 1 1 0; display V_G,I_G; # nCalls разів розв’зуємо задачу (1), (3), (5) solve; display alpha_G; let alphaG1:=alpha_G-0.5; let nS:={1}; let S[1] := {j in V_G: xs[j]>=0.99}; for{i in 2..nCalls} { solve; display alpha_G; if (alpha_G<alphaG1) then break; let nS:=nS union {i}; let S[i] := {j in V_G: xs[j]>=0.99}; } display nCalls,S; # друкуємо кількість запусків солвера та отримані макси- мальні незалежні множини За п’ять запусків солвера gurobi цей AMPL-код знаходить усі максимальні незалежні множині графа Методи і засоби програмної інженерії – уточнити постановки задачі про максимальну незалежну множину, подані в [3], і надати більш ефе- ктивні коди мовою AMPL для знаходження усіх максимальних незалежних множин і максимальної суми неза- лежних множин вершин неорієнтованого графа. 1. Булеві задачі для знаходження числа незалежності та їх властивості Множину вершин графа G називають незалежною, якщо ніякі дві вершини цієї множини не є суміжни- ми (не з'єднані ребром). Індукований цією множиною підграф складається з ізольованих вершин, їх кількість визначає розмір незалежної множини вершин графа. Оптимізаційна задача про максимальну незалежну множи- ну формулюється таким чином: у заданому неорієнтованому графі G без петель потрібно знайти незалежну множину максимального розміру. Цей розмір називають числом незалежності або числом внутрішньої стійкості і позначають ( )G . Задача знаходження числа незалежності ( )G належить до класу NP-повних задач [4, 5]. Задача про максимальну незалежну множину тісно пов'язана з задачею знаходження хроматичного числа ( )G – найменшої кількості різних кольорів, якими можна розфарбувати вершини графа G таким чином, щоб ніякі дві суміжні вершини не були розфарбовані однаково. В.Г. Візинг та Г.С. Плесневич встановили [6], що задачу знаходження хроматичного числа можна звести до ітеративної послідовності задач знаходження числа незалежності графів, отриманих як декартів добуток повних графів та копій графа G . Нехай  0,1ix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в незалеж- ну множину вершин графа ( ( ), ( ))G V G E G= , і нулю – в протилежному випадку. Тут ( )V G – множина вершин графа G , ( )E G – множина його ребер. Щоб знайти число незалежності ( )G , достатньо знайти один із розв'яз- ків задачі булевого лінійного програмуваннях [7]:  0,1 ( ) ( ) max i ix i V G G x   =  (1) за обмежень 1, ( , ) ( ).i jx x i j E G+   (2) Задача (1), (2) містить ( )V G булевих змінних та ( )E G обмежень у формі лінійних нерівностей. Обмеження (2) означають, що коли у графі G вершини i та j з'єднані ребром, то тільки одна з них буде належати неза- лежній множині вершин графа G . Задача (1), (2) може бути переформульована у вигляді задачі булевого лінійного програмування, яка ви- користовується для опису максимального k-плексу [8]. Для цього достатньо обмеження (2) замінити на такі: ( ) ( ) ( )1 , .j i i j i x d x i V G   −   (3) Задача (1), (3) містить ( )V G булевих змінних та ( )V G обмежень у формі лінійних нерівностей. Тут граф G представлено у формі ( ( ), ( ))G V G G=  , де  ( ) ( ), 1, ,G i i n =  = , а ( )i – кінцеві вершини тих дуг, у яких початковою є вершина i , яка має ступінь ( )id i=  . Обмеження (3) означають, що коли вершина належить незалежній множині вершин графа G , то жодна суміжна з нею вершина не може належати цій незалежній множині. В задачах (1), (3) кількість лінійних обмежень буде значно меншою, ніж у задачі (1), (2), для графів з великою кількістю ребер. Число незалежності ( )G визначається однозначно, але йому може відповідати багато максимальних не- залежних множин графа G . Так, наприклад, граф 6W (має форму колеса на основі 5C , циклу з п’яти вершин), множину ребер та матрицю суміжності якого наведено на рис. 1, містить п'ять незалежних множин розміру 6( ) 2W = . На рис. 1 наведено ці множини:  1 1,3S = ,  2 1,4S = ,  3 2,4S = ,  4 2,5S = ,  5 3,5S = . Вершини, які входять в них, позначено чорним кольором. у такому порядку: S[1]={1,3}, S[2]={2,4}, S[3]={1,4}, S[4]={2,5}, S[5]={3,5}. Для його налаштування на пошук максимальних незалежних множин відповідного графа достатньо в AMPL-коді перший оператор за- мінити на оператор з описом множини вершин цього графа, а в операторі «data» вказати відповідну графу матрицю суміжності I_G. AMPL-код для знаходження nCalls розв’язків задачі (1), (3), (5) апробовано для формування згурто- ваних під-команд окремих програмних проектів у складі їх портфеля, тобто розфарбування 25 фахівців – ви- конавців програмних проектів – різними кольорами так, щоб фахівці, між якими в попередніх проектах мали місце конфлікти, не могли бути зафарбовані одним і тим же кольором (див. задачу 1 в розд.4). 3. Булеві задачі для Методи і засоби програмної інженерії for{i in 2..nCalls} { solve; display alpha_G; if (alpha_G<alphaG1) then break; let nS:=nS union {i}; let S[i] := {j in V_G: xs[j]>=0.99}; } display nCalls,S; # друкуємо кількість запусків солвера та отримані максимальні незалежні множини За п'ять запусків солвера gurobi цей AMPL-код знаходить усі максимальні незалежні множині графа 6W у такому порядку: S[1]={1,3}, S[2]={2,4}, S[3]={1,4}, S[4]={2,5}, S[5]={3,5}. Для його налаштування на пошук максимальних незалежних множин відповідного графа достатньо в AMPL-коді перший оператор замінити на оператор з описом множини вершин цього графа, а в операторі «data» вказати відповідну графу матрицю суміжності I_G. AMPL-код для знаходження nCalls розв'язків задачі (1), (3), (5) апробовано для формування згуртованих під-команд окремих програмних проектів у складі їх портфеля, тобто розфарбування 25 фахівців – виконавців програмних проектів – різними кольорами так, щоб фахівці, між якими в попередніх проектах мали місце кон- флікти, не могли бути зафарбовані одним і тим же кольором (див. задачу 1 в розд.4). 3. Булеві задачі для ( )K G та алгоритм Візинга-Плесневича Розглянемо таку задачу: знайти K попарно неперетинних незалежних множин графа G , сумарний роз- мір (сума вершин, які входять в незалежні множини) яких є максимальним. Цей розмір позначимо ( )K G . Нехай  0,1kix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в k -ту не- залежну множину вершин графа G ( 1,...,k K= ), та нулю – в протилежному випадку. Щоб знайти ( )K G , до- статньо знайти один із розв'язків задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (6) за обмежень 1, 1,..., , ( , ) ( ),ki kjx x k K i j E G+  =  (7) 1 1, ( ). K ki k x i V G =   (8) Задача (6)–(8) містить ( )K V G булевих змінних та ( )( ) ( )K E G V G + обмежень – лінійних нерівностей. Обмеження (7) означають, що коли в графі G вершини i та j з’єднані ребром, то лише одна з них може належати k -тій незалежній множині вершин графа G . Обмеження (8) означають, що кожна з вершин графа G може належати одній з незалежних множин і гарантують попарну неперетинність незалежних множин у графі G . Число ( )K G та відповідні йому незалежні множини 1S , …, KS можна знайти за допомогою модифікації перших трьох операторів в AMPL-коді: param K:=2; # кількість незалежних множин set V_G := {1,2,3,4,5,6}; # вершини графа set E_G:={(1,2),(1,5),(1,6),(2,3),(2,6),(3,4),(3,6),(4,5),(4,6),(5,6)}; # ребра графа display V_G,E_G; param nv:=card(V_G); set kk:={1..K}; set S{kk} default {}; var xs{k in 1..K, i in 1..card(V_G)} binary; maximize alpha_Gk: sum{k in 1..K, i in 1..nv}xs[k,i]; subject to constr7 {k in 1..K, (i,j) in E_G}: xs[k,i]+xs[k,j] <= 1; subject to constr8 {i in V_G}: sum{k in 1..K} xs[k,i] <= 1; option solver gurobi; # вибір солвера solve; display alpha_Gk; for{k in 1..K} { let S[k] := {j in V_G: xs[k,j]>=0.9}; } display S; Цей AMPL-код налаштований на пошук двох незалежних множин у графі 6W за допомогою розв'язання задачі (6) – (8). Він знаходить незалежні множини: S[1]={1,3}, S[2]={2,5}; яким відповідає 2 5( ) 2C = . Якщо в AMPL-коді перший оператор модифікувати на оператор "param K:=3", то отримаємо 3 5( ) 5C = , якому відпо- відають незалежні множини: S[1]={1,3}, S[2]={2,4}, S[3]={5}. та алгоритм Візинга-Плесневича Розглянемо таку задачу: знайти K попарно неперетинних незалежних множин графа G, сумарний роз- мір (сума вершин, які входять в незалежні множини) яких є максимальним. Цей розмір позначимо Методи і засоби програмної інженерії for{i in 2..nCalls} { solve; display alpha_G; if (alpha_G<alphaG1) then break; let nS:=nS union {i}; let S[i] := {j in V_G: xs[j]>=0.99}; } display nCalls,S; # друкуємо кількість запусків солвера та отримані максимальні незалежні множини За п'ять запусків солвера gurobi цей AMPL-код знаходить усі максимальні незалежні множині графа 6W у такому порядку: S[1]={1,3}, S[2]={2,4}, S[3]={1,4}, S[4]={2,5}, S[5]={3,5}. Для його налаштування на пошук максимальних незалежних множин відповідного графа достатньо в AMPL-коді перший оператор замінити на оператор з описом множини вершин цього графа, а в операторі «data» вказати відповідну графу матрицю суміжності I_G. AMPL-код для знаходження nCalls розв'язків задачі (1), (3), (5) апробовано для формування згуртованих під-команд окремих програмних проектів у складі їх портфеля, тобто розфарбування 25 фахівців – виконавців програмних проектів – різними кольорами так, щоб фахівці, між якими в попередніх проектах мали місце кон- флікти, не могли бути зафарбовані одним і тим же кольором (див. задачу 1 в розд.4). 3. Булеві задачі для ( )K G та алгоритм Візинга-Плесневича Розглянемо таку задачу: знайти K попарно неперетинних незалежних множин графа G , сумарний роз- мір (сума вершин, які входять в незалежні множини) яких є максимальним. Цей розмір позначимо ( )K G . Нехай  0,1kix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в k -ту не- залежну множину вершин графа G ( 1,...,k K= ), та нулю – в протилежному випадку. Щоб знайти ( )K G , до- статньо знайти один із розв'язків задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (6) за обмежень 1, 1,..., , ( , ) ( ),ki kjx x k K i j E G+  =  (7) 1 1, ( ). K ki k x i V G =   (8) Задача (6)–(8) містить ( )K V G булевих змінних та ( )( ) ( )K E G V G + обмежень – лінійних нерівностей. Обмеження (7) означають, що коли в графі G вершини i та j з’єднані ребром, то лише одна з них може належати k -тій незалежній множині вершин графа G . Обмеження (8) означають, що кожна з вершин графа G може належати одній з незалежних множин і гарантують попарну неперетинність незалежних множин у графі G . Число ( )K G та відповідні йому незалежні множини 1S , …, KS можна знайти за допомогою модифікації перших трьох операторів в AMPL-коді: param K:=2; # кількість незалежних множин set V_G := {1,2,3,4,5,6}; # вершини графа set E_G:={(1,2),(1,5),(1,6),(2,3),(2,6),(3,4),(3,6),(4,5),(4,6),(5,6)}; # ребра графа display V_G,E_G; param nv:=card(V_G); set kk:={1..K}; set S{kk} default {}; var xs{k in 1..K, i in 1..card(V_G)} binary; maximize alpha_Gk: sum{k in 1..K, i in 1..nv}xs[k,i]; subject to constr7 {k in 1..K, (i,j) in E_G}: xs[k,i]+xs[k,j] <= 1; subject to constr8 {i in V_G}: sum{k in 1..K} xs[k,i] <= 1; option solver gurobi; # вибір солвера solve; display alpha_Gk; for{k in 1..K} { let S[k] := {j in V_G: xs[k,j]>=0.9}; } display S; Цей AMPL-код налаштований на пошук двох незалежних множин у графі 6W за допомогою розв'язання задачі (6) – (8). Він знаходить незалежні множини: S[1]={1,3}, S[2]={2,5}; яким відповідає 2 5( ) 2C = . Якщо в AMPL-коді перший оператор модифікувати на оператор "param K:=3", то отримаємо 3 5( ) 5C = , якому відпо- відають незалежні множини: S[1]={1,3}, S[2]={2,4}, S[3]={5}. . Нехай Методи і засоби програмної інженерії for{i in 2..nCalls} { solve; display alpha_G; if (alpha_G<alphaG1) then break; let nS:=nS union {i}; let S[i] := {j in V_G: xs[j]>=0.99}; } display nCalls,S; # друкуємо кількість запусків солвера та отримані максимальні незалежні множини За п'ять запусків солвера gurobi цей AMPL-код знаходить усі максимальні незалежні множині графа 6W у такому порядку: S[1]={1,3}, S[2]={2,4}, S[3]={1,4}, S[4]={2,5}, S[5]={3,5}. Для його налаштування на пошук максимальних незалежних множин відповідного графа достатньо в AMPL-коді перший оператор замінити на оператор з описом множини вершин цього графа, а в операторі «data» вказати відповідну графу матрицю суміжності I_G. AMPL-код для знаходження nCalls розв'язків задачі (1), (3), (5) апробовано для формування згуртованих під-команд окремих програмних проектів у складі їх портфеля, тобто розфарбування 25 фахівців – виконавців програмних проектів – різними кольорами так, щоб фахівці, між якими в попередніх проектах мали місце кон- флікти, не могли бути зафарбовані одним і тим же кольором (див. задачу 1 в розд.4). 3. Булеві задачі для ( )K G та алгоритм Візинга-Плесневича Розглянемо таку задачу: знайти K попарно неперетинних незалежних множин графа G , сумарний роз- мір (сума вершин, які входять в незалежні множини) яких є максимальним. Цей розмір позначимо ( )K G . Нехай  0,1kix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в k -ту не- залежну множину вершин графа G ( 1,...,k K= ), та нулю – в протилежному випадку. Щоб знайти ( )K G , до- статньо знайти один із розв'язків задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (6) за обмежень 1, 1,..., , ( , ) ( ),ki kjx x k K i j E G+  =  (7) 1 1, ( ). K ki k x i V G =   (8) Задача (6)–(8) містить ( )K V G булевих змінних та ( )( ) ( )K E G V G + обмежень – лінійних нерівностей. Обмеження (7) означають, що коли в графі G вершини i та j з’єднані ребром, то лише одна з них може належати k -тій незалежній множині вершин графа G . Обмеження (8) означають, що кожна з вершин графа G може належати одній з незалежних множин і гарантують попарну неперетинність незалежних множин у графі G . Число ( )K G та відповідні йому незалежні множини 1S , …, KS можна знайти за допомогою модифікації перших трьох операторів в AMPL-коді: param K:=2; # кількість незалежних множин set V_G := {1,2,3,4,5,6}; # вершини графа set E_G:={(1,2),(1,5),(1,6),(2,3),(2,6),(3,4),(3,6),(4,5),(4,6),(5,6)}; # ребра графа display V_G,E_G; param nv:=card(V_G); set kk:={1..K}; set S{kk} default {}; var xs{k in 1..K, i in 1..card(V_G)} binary; maximize alpha_Gk: sum{k in 1..K, i in 1..nv}xs[k,i]; subject to constr7 {k in 1..K, (i,j) in E_G}: xs[k,i]+xs[k,j] <= 1; subject to constr8 {i in V_G}: sum{k in 1..K} xs[k,i] <= 1; option solver gurobi; # вибір солвера solve; display alpha_Gk; for{k in 1..K} { let S[k] := {j in V_G: xs[k,j]>=0.9}; } display S; Цей AMPL-код налаштований на пошук двох незалежних множин у графі 6W за допомогою розв'язання задачі (6) – (8). Він знаходить незалежні множини: S[1]={1,3}, S[2]={2,5}; яким відповідає 2 5( ) 2C = . Якщо в AMPL-коді перший оператор модифікувати на оператор "param K:=3", то отримаємо 3 5( ) 5C = , якому відпо- відають незалежні множини: S[1]={1,3}, S[2]={2,4}, S[3]={5}. – булева змінна, яка дорівнює одиниці, якщо вершина Методи і засоби програмної інженерії for{i in 2..nCalls} { solve; display alpha_G; if (alpha_G<alphaG1) then break; let nS:=nS union {i}; let S[i] := {j in V_G: xs[j]>=0.99}; } display nCalls,S; # друкуємо кількість запусків солвера та отримані максимальні незалежні множини За п'ять запусків солвера gurobi цей AMPL-код знаходить усі максимальні незалежні множині графа 6W у такому порядку: S[1]={1,3}, S[2]={2,4}, S[3]={1,4}, S[4]={2,5}, S[5]={3,5}. Для його налаштування на пошук максимальних незалежних множин відповідного графа достатньо в AMPL-коді перший оператор замінити на оператор з описом множини вершин цього графа, а в операторі «data» вказати відповідну графу матрицю суміжності I_G. AMPL-код для знаходження nCalls розв'язків задачі (1), (3), (5) апробовано для формування згуртованих під-команд окремих програмних проектів у складі їх портфеля, тобто розфарбування 25 фахівців – виконавців програмних проектів – різними кольорами так, щоб фахівці, між якими в попередніх проектах мали місце кон- флікти, не могли бути зафарбовані одним і тим же кольором (див. задачу 1 в розд.4). 3. Булеві задачі для ( )K G та алгоритм Візинга-Плесневича Розглянемо таку задачу: знайти K попарно неперетинних незалежних множин графа G , сумарний роз- мір (сума вершин, які входять в незалежні множини) яких є максимальним. Цей розмір позначимо ( )K G . Нехай  0,1kix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в k -ту не- залежну множину вершин графа G ( 1,...,k K= ), та нулю – в протилежному випадку. Щоб знайти ( )K G , до- статньо знайти один із розв'язків задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (6) за обмежень 1, 1,..., , ( , ) ( ),ki kjx x k K i j E G+  =  (7) 1 1, ( ). K ki k x i V G =   (8) Задача (6)–(8) містить ( )K V G булевих змінних та ( )( ) ( )K E G V G + обмежень – лінійних нерівностей. Обмеження (7) означають, що коли в графі G вершини i та j з’єднані ребром, то лише одна з них може належати k -тій незалежній множині вершин графа G . Обмеження (8) означають, що кожна з вершин графа G може належати одній з незалежних множин і гарантують попарну неперетинність незалежних множин у графі G . Число ( )K G та відповідні йому незалежні множини 1S , …, KS можна знайти за допомогою модифікації перших трьох операторів в AMPL-коді: param K:=2; # кількість незалежних множин set V_G := {1,2,3,4,5,6}; # вершини графа set E_G:={(1,2),(1,5),(1,6),(2,3),(2,6),(3,4),(3,6),(4,5),(4,6),(5,6)}; # ребра графа display V_G,E_G; param nv:=card(V_G); set kk:={1..K}; set S{kk} default {}; var xs{k in 1..K, i in 1..card(V_G)} binary; maximize alpha_Gk: sum{k in 1..K, i in 1..nv}xs[k,i]; subject to constr7 {k in 1..K, (i,j) in E_G}: xs[k,i]+xs[k,j] <= 1; subject to constr8 {i in V_G}: sum{k in 1..K} xs[k,i] <= 1; option solver gurobi; # вибір солвера solve; display alpha_Gk; for{k in 1..K} { let S[k] := {j in V_G: xs[k,j]>=0.9}; } display S; Цей AMPL-код налаштований на пошук двох незалежних множин у графі 6W за допомогою розв'язання задачі (6) – (8). Він знаходить незалежні множини: S[1]={1,3}, S[2]={2,5}; яким відповідає 2 5( ) 2C = . Якщо в AMPL-коді перший оператор модифікувати на оператор "param K:=3", то отримаємо 3 5( ) 5C = , якому відпо- відають незалежні множини: S[1]={1,3}, S[2]={2,4}, S[3]={5}. включається в k-ту незалежну множину вершин графа Методи і засоби програмної інженерії for{i in 2..nCalls} { solve; display alpha_G; if (alpha_G<alphaG1) then break; let nS:=nS union {i}; let S[i] := {j in V_G: xs[j]>=0.99}; } display nCalls,S; # друкуємо кількість запусків солвера та отримані максимальні незалежні множини За п'ять запусків солвера gurobi цей AMPL-код знаходить усі максимальні незалежні множині графа 6W у такому порядку: S[1]={1,3}, S[2]={2,4}, S[3]={1,4}, S[4]={2,5}, S[5]={3,5}. Для його налаштування на пошук максимальних незалежних множин відповідного графа достатньо в AMPL-коді перший оператор замінити на оператор з описом множини вершин цього графа, а в операторі «data» вказати відповідну графу матрицю суміжності I_G. AMPL-код для знаходження nCalls розв'язків задачі (1), (3), (5) апробовано для формування згуртованих під-команд окремих програмних проектів у складі їх портфеля, тобто розфарбування 25 фахівців – виконавців програмних проектів – різними кольорами так, щоб фахівці, між якими в попередніх проектах мали місце кон- флікти, не могли бути зафарбовані одним і тим же кольором (див. задачу 1 в розд.4). 3. Булеві задачі для ( )K G та алгоритм Візинга-Плесневича Розглянемо таку задачу: знайти K попарно неперетинних незалежних множин графа G , сумарний роз- мір (сума вершин, які входять в незалежні множини) яких є максимальним. Цей розмір позначимо ( )K G . Нехай  0,1kix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в k -ту не- залежну множину вершин графа G ( 1,...,k K= ), та нулю – в протилежному випадку. Щоб знайти ( )K G , до- статньо знайти один із розв'язків задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (6) за обмежень 1, 1,..., , ( , ) ( ),ki kjx x k K i j E G+  =  (7) 1 1, ( ). K ki k x i V G =   (8) Задача (6)–(8) містить ( )K V G булевих змінних та ( )( ) ( )K E G V G + обмежень – лінійних нерівностей. Обмеження (7) означають, що коли в графі G вершини i та j з’єднані ребром, то лише одна з них може належати k -тій незалежній множині вершин графа G . Обмеження (8) означають, що кожна з вершин графа G може належати одній з незалежних множин і гарантують попарну неперетинність незалежних множин у графі G . Число ( )K G та відповідні йому незалежні множини 1S , …, KS можна знайти за допомогою модифікації перших трьох операторів в AMPL-коді: param K:=2; # кількість незалежних множин set V_G := {1,2,3,4,5,6}; # вершини графа set E_G:={(1,2),(1,5),(1,6),(2,3),(2,6),(3,4),(3,6),(4,5),(4,6),(5,6)}; # ребра графа display V_G,E_G; param nv:=card(V_G); set kk:={1..K}; set S{kk} default {}; var xs{k in 1..K, i in 1..card(V_G)} binary; maximize alpha_Gk: sum{k in 1..K, i in 1..nv}xs[k,i]; subject to constr7 {k in 1..K, (i,j) in E_G}: xs[k,i]+xs[k,j] <= 1; subject to constr8 {i in V_G}: sum{k in 1..K} xs[k,i] <= 1; option solver gurobi; # вибір солвера solve; display alpha_Gk; for{k in 1..K} { let S[k] := {j in V_G: xs[k,j]>=0.9}; } display S; Цей AMPL-код налаштований на пошук двох незалежних множин у графі 6W за допомогою розв'язання задачі (6) – (8). Він знаходить незалежні множини: S[1]={1,3}, S[2]={2,5}; яким відповідає 2 5( ) 2C = . Якщо в AMPL-коді перший оператор модифікувати на оператор "param K:=3", то отримаємо 3 5( ) 5C = , якому відпо- відають незалежні множини: S[1]={1,3}, S[2]={2,4}, S[3]={5}. та нулю – в протилежному випадку. Щоб знайти Методи і засоби програмної інженерії for{i in 2..nCalls} { solve; display alpha_G; if (alpha_G<alphaG1) then break; let nS:=nS union {i}; let S[i] := {j in V_G: xs[j]>=0.99}; } display nCalls,S; # друкуємо кількість запусків солвера та отримані максимальні незалежні множини За п'ять запусків солвера gurobi цей AMPL-код знаходить усі максимальні незалежні множині графа 6W у такому порядку: S[1]={1,3}, S[2]={2,4}, S[3]={1,4}, S[4]={2,5}, S[5]={3,5}. Для його налаштування на пошук максимальних незалежних множин відповідного графа достатньо в AMPL-коді перший оператор замінити на оператор з описом множини вершин цього графа, а в операторі «data» вказати відповідну графу матрицю суміжності I_G. AMPL-код для знаходження nCalls розв'язків задачі (1), (3), (5) апробовано для формування згуртованих під-команд окремих програмних проектів у складі їх портфеля, тобто розфарбування 25 фахівців – виконавців програмних проектів – різними кольорами так, щоб фахівці, між якими в попередніх проектах мали місце кон- флікти, не могли бути зафарбовані одним і тим же кольором (див. задачу 1 в розд.4). 3. Булеві задачі для ( )K G та алгоритм Візинга-Плесневича Розглянемо таку задачу: знайти K попарно неперетинних незалежних множин графа G , сумарний роз- мір (сума вершин, які входять в незалежні множини) яких є максимальним. Цей розмір позначимо ( )K G . Нехай  0,1kix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в k -ту не- залежну множину вершин графа G ( 1,...,k K= ), та нулю – в протилежному випадку. Щоб знайти ( )K G , до- статньо знайти один із розв'язків задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (6) за обмежень 1, 1,..., , ( , ) ( ),ki kjx x k K i j E G+  =  (7) 1 1, ( ). K ki k x i V G =   (8) Задача (6)–(8) містить ( )K V G булевих змінних та ( )( ) ( )K E G V G + обмежень – лінійних нерівностей. Обмеження (7) означають, що коли в графі G вершини i та j з’єднані ребром, то лише одна з них може належати k -тій незалежній множині вершин графа G . Обмеження (8) означають, що кожна з вершин графа G може належати одній з незалежних множин і гарантують попарну неперетинність незалежних множин у графі G . Число ( )K G та відповідні йому незалежні множини 1S , …, KS можна знайти за допомогою модифікації перших трьох операторів в AMPL-коді: param K:=2; # кількість незалежних множин set V_G := {1,2,3,4,5,6}; # вершини графа set E_G:={(1,2),(1,5),(1,6),(2,3),(2,6),(3,4),(3,6),(4,5),(4,6),(5,6)}; # ребра графа display V_G,E_G; param nv:=card(V_G); set kk:={1..K}; set S{kk} default {}; var xs{k in 1..K, i in 1..card(V_G)} binary; maximize alpha_Gk: sum{k in 1..K, i in 1..nv}xs[k,i]; subject to constr7 {k in 1..K, (i,j) in E_G}: xs[k,i]+xs[k,j] <= 1; subject to constr8 {i in V_G}: sum{k in 1..K} xs[k,i] <= 1; option solver gurobi; # вибір солвера solve; display alpha_Gk; for{k in 1..K} { let S[k] := {j in V_G: xs[k,j]>=0.9}; } display S; Цей AMPL-код налаштований на пошук двох незалежних множин у графі 6W за допомогою розв'язання задачі (6) – (8). Він знаходить незалежні множини: S[1]={1,3}, S[2]={2,5}; яким відповідає 2 5( ) 2C = . Якщо в AMPL-коді перший оператор модифікувати на оператор "param K:=3", то отримаємо 3 5( ) 5C = , якому відпо- відають незалежні множини: S[1]={1,3}, S[2]={2,4}, S[3]={5}. , достатньо знайти один із розв’язків задачі булевого лінійного програмування: Методи і засоби програмної інженерії for{i in 2..nCalls} { solve; display alpha_G; if (alpha_G<alphaG1) then break; let nS:=nS union {i}; let S[i] := {j in V_G: xs[j]>=0.99}; } display nCalls,S; # друкуємо кількість запусків солвера та отримані максимальні незалежні множини За п'ять запусків солвера gurobi цей AMPL-код знаходить усі максимальні незалежні множині графа 6W у такому порядку: S[1]={1,3}, S[2]={2,4}, S[3]={1,4}, S[4]={2,5}, S[5]={3,5}. Для його налаштування на пошук максимальних незалежних множин відповідного графа достатньо в AMPL-коді перший оператор замінити на оператор з описом множини вершин цього графа, а в операторі «data» вказати відповідну графу матрицю суміжності I_G. AMPL-код для знаходження nCalls розв'язків задачі (1), (3), (5) апробовано для формування згуртованих під-команд окремих програмних проектів у складі їх портфеля, тобто розфарбування 25 фахівців – виконавців програмних проектів – різними кольорами так, щоб фахівці, між якими в попередніх проектах мали місце кон- флікти, не могли бути зафарбовані одним і тим же кольором (див. задачу 1 в розд.4). 3. Булеві задачі для ( )K G та алгоритм Візинга-Плесневича Розглянемо таку задачу: знайти K попарно неперетинних незалежних множин графа G , сумарний роз- мір (сума вершин, які входять в незалежні множини) яких є максимальним. Цей розмір позначимо ( )K G . Нехай  0,1kix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в k -ту не- залежну множину вершин графа G ( 1,...,k K= ), та нулю – в протилежному випадку. Щоб знайти ( )K G , до- статньо знайти один із розв'язків задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (6) за обмежень 1, 1,..., , ( , ) ( ),ki kjx x k K i j E G+  =  (7) 1 1, ( ). K ki k x i V G =   (8) Задача (6)–(8) містить ( )K V G булевих змінних та ( )( ) ( )K E G V G + обмежень – лінійних нерівностей. Обмеження (7) означають, що коли в графі G вершини i та j з’єднані ребром, то лише одна з них може належати k -тій незалежній множині вершин графа G . Обмеження (8) означають, що кожна з вершин графа G може належати одній з незалежних множин і гарантують попарну неперетинність незалежних множин у графі G . Число ( )K G та відповідні йому незалежні множини 1S , …, KS можна знайти за допомогою модифікації перших трьох операторів в AMPL-коді: param K:=2; # кількість незалежних множин set V_G := {1,2,3,4,5,6}; # вершини графа set E_G:={(1,2),(1,5),(1,6),(2,3),(2,6),(3,4),(3,6),(4,5),(4,6),(5,6)}; # ребра графа display V_G,E_G; param nv:=card(V_G); set kk:={1..K}; set S{kk} default {}; var xs{k in 1..K, i in 1..card(V_G)} binary; maximize alpha_Gk: sum{k in 1..K, i in 1..nv}xs[k,i]; subject to constr7 {k in 1..K, (i,j) in E_G}: xs[k,i]+xs[k,j] <= 1; subject to constr8 {i in V_G}: sum{k in 1..K} xs[k,i] <= 1; option solver gurobi; # вибір солвера solve; display alpha_Gk; for{k in 1..K} { let S[k] := {j in V_G: xs[k,j]>=0.9}; } display S; Цей AMPL-код налаштований на пошук двох незалежних множин у графі 6W за допомогою розв'язання задачі (6) – (8). Він знаходить незалежні множини: S[1]={1,3}, S[2]={2,5}; яким відповідає 2 5( ) 2C = . Якщо в AMPL-коді перший оператор модифікувати на оператор "param K:=3", то отримаємо 3 5( ) 5C = , якому відпо- відають незалежні множини: S[1]={1,3}, S[2]={2,4}, S[3]={5}. (6) за обмежень Методи і засоби програмної інженерії for{i in 2..nCalls} { solve; display alpha_G; if (alpha_G<alphaG1) then break; let nS:=nS union {i}; let S[i] := {j in V_G: xs[j]>=0.99}; } display nCalls,S; # друкуємо кількість запусків солвера та отримані максимальні незалежні множини За п'ять запусків солвера gurobi цей AMPL-код знаходить усі максимальні незалежні множині графа 6W у такому порядку: S[1]={1,3}, S[2]={2,4}, S[3]={1,4}, S[4]={2,5}, S[5]={3,5}. Для його налаштування на пошук максимальних незалежних множин відповідного графа достатньо в AMPL-коді перший оператор замінити на оператор з описом множини вершин цього графа, а в операторі «data» вказати відповідну графу матрицю суміжності I_G. AMPL-код для знаходження nCalls розв'язків задачі (1), (3), (5) апробовано для формування згуртованих під-команд окремих програмних проектів у складі їх портфеля, тобто розфарбування 25 фахівців – виконавців програмних проектів – різними кольорами так, щоб фахівці, між якими в попередніх проектах мали місце кон- флікти, не могли бути зафарбовані одним і тим же кольором (див. задачу 1 в розд.4). 3. Булеві задачі для ( )K G та алгоритм Візинга-Плесневича Розглянемо таку задачу: знайти K попарно неперетинних незалежних множин графа G , сумарний роз- мір (сума вершин, які входять в незалежні множини) яких є максимальним. Цей розмір позначимо ( )K G . Нехай  0,1kix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в k -ту не- залежну множину вершин графа G ( 1,...,k K= ), та нулю – в протилежному випадку. Щоб знайти ( )K G , до- статньо знайти один із розв'язків задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (6) за обмежень 1, 1,..., , ( , ) ( ),ki kjx x k K i j E G+  =  (7) 1 1, ( ). K ki k x i V G =   (8) Задача (6)–(8) містить ( )K V G булевих змінних та ( )( ) ( )K E G V G + обмежень – лінійних нерівностей. Обмеження (7) означають, що коли в графі G вершини i та j з’єднані ребром, то лише одна з них може належати k -тій незалежній множині вершин графа G . Обмеження (8) означають, що кожна з вершин графа G може належати одній з незалежних множин і гарантують попарну неперетинність незалежних множин у графі G . Число ( )K G та відповідні йому незалежні множини 1S , …, KS можна знайти за допомогою модифікації перших трьох операторів в AMPL-коді: param K:=2; # кількість незалежних множин set V_G := {1,2,3,4,5,6}; # вершини графа set E_G:={(1,2),(1,5),(1,6),(2,3),(2,6),(3,4),(3,6),(4,5),(4,6),(5,6)}; # ребра графа display V_G,E_G; param nv:=card(V_G); set kk:={1..K}; set S{kk} default {}; var xs{k in 1..K, i in 1..card(V_G)} binary; maximize alpha_Gk: sum{k in 1..K, i in 1..nv}xs[k,i]; subject to constr7 {k in 1..K, (i,j) in E_G}: xs[k,i]+xs[k,j] <= 1; subject to constr8 {i in V_G}: sum{k in 1..K} xs[k,i] <= 1; option solver gurobi; # вибір солвера solve; display alpha_Gk; for{k in 1..K} { let S[k] := {j in V_G: xs[k,j]>=0.9}; } display S; Цей AMPL-код налаштований на пошук двох незалежних множин у графі 6W за допомогою розв'язання задачі (6) – (8). Він знаходить незалежні множини: S[1]={1,3}, S[2]={2,5}; яким відповідає 2 5( ) 2C = . Якщо в AMPL-коді перший оператор модифікувати на оператор "param K:=3", то отримаємо 3 5( ) 5C = , якому відпо- відають незалежні множини: S[1]={1,3}, S[2]={2,4}, S[3]={5}. (7) Методи і засоби програмної інженерії for{i in 2..nCalls} { solve; display alpha_G; if (alpha_G<alphaG1) then break; let nS:=nS union {i}; let S[i] := {j in V_G: xs[j]>=0.99}; } display nCalls,S; # друкуємо кількість запусків солвера та отримані максимальні незалежні множини За п'ять запусків солвера gurobi цей AMPL-код знаходить усі максимальні незалежні множині графа 6W у такому порядку: S[1]={1,3}, S[2]={2,4}, S[3]={1,4}, S[4]={2,5}, S[5]={3,5}. Для його налаштування на пошук максимальних незалежних множин відповідного графа достатньо в AMPL-коді перший оператор замінити на оператор з описом множини вершин цього графа, а в операторі «data» вказати відповідну графу матрицю суміжності I_G. AMPL-код для знаходження nCalls розв'язків задачі (1), (3), (5) апробовано для формування згуртованих під-команд окремих програмних проектів у складі їх портфеля, тобто розфарбування 25 фахівців – виконавців програмних проектів – різними кольорами так, щоб фахівці, між якими в попередніх проектах мали місце кон- флікти, не могли бути зафарбовані одним і тим же кольором (див. задачу 1 в розд.4). 3. Булеві задачі для ( )K G та алгоритм Візинга-Плесневича Розглянемо таку задачу: знайти K попарно неперетинних незалежних множин графа G , сумарний роз- мір (сума вершин, які входять в незалежні множини) яких є максимальним. Цей розмір позначимо ( )K G . Нехай  0,1kix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в k -ту не- залежну множину вершин графа G ( 1,...,k K= ), та нулю – в протилежному випадку. Щоб знайти ( )K G , до- статньо знайти один із розв'язків задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (6) за обмежень 1, 1,..., , ( , ) ( ),ki kjx x k K i j E G+  =  (7) 1 1, ( ). K ki k x i V G =   (8) Задача (6)–(8) містить ( )K V G булевих змінних та ( )( ) ( )K E G V G + обмежень – лінійних нерівностей. Обмеження (7) означають, що коли в графі G вершини i та j з’єднані ребром, то лише одна з них може належати k -тій незалежній множині вершин графа G . Обмеження (8) означають, що кожна з вершин графа G може належати одній з незалежних множин і гарантують попарну неперетинність незалежних множин у графі G . Число ( )K G та відповідні йому незалежні множини 1S , …, KS можна знайти за допомогою модифікації перших трьох операторів в AMPL-коді: param K:=2; # кількість незалежних множин set V_G := {1,2,3,4,5,6}; # вершини графа set E_G:={(1,2),(1,5),(1,6),(2,3),(2,6),(3,4),(3,6),(4,5),(4,6),(5,6)}; # ребра графа display V_G,E_G; param nv:=card(V_G); set kk:={1..K}; set S{kk} default {}; var xs{k in 1..K, i in 1..card(V_G)} binary; maximize alpha_Gk: sum{k in 1..K, i in 1..nv}xs[k,i]; subject to constr7 {k in 1..K, (i,j) in E_G}: xs[k,i]+xs[k,j] <= 1; subject to constr8 {i in V_G}: sum{k in 1..K} xs[k,i] <= 1; option solver gurobi; # вибір солвера solve; display alpha_Gk; for{k in 1..K} { let S[k] := {j in V_G: xs[k,j]>=0.9}; } display S; Цей AMPL-код налаштований на пошук двох незалежних множин у графі 6W за допомогою розв'язання задачі (6) – (8). Він знаходить незалежні множини: S[1]={1,3}, S[2]={2,5}; яким відповідає 2 5( ) 2C = . Якщо в AMPL-коді перший оператор модифікувати на оператор "param K:=3", то отримаємо 3 5( ) 5C = , якому відпо- відають незалежні множини: S[1]={1,3}, S[2]={2,4}, S[3]={5}. (8) Задача (6)–(8) містить Методи і засоби програмної інженерії for{i in 2..nCalls} { solve; display alpha_G; if (alpha_G<alphaG1) then break; let nS:=nS union {i}; let S[i] := {j in V_G: xs[j]>=0.99}; } display nCalls,S; # друкуємо кількість запусків солвера та отримані максимальні незалежні множини За п'ять запусків солвера gurobi цей AMPL-код знаходить усі максимальні незалежні множині графа 6W у такому порядку: S[1]={1,3}, S[2]={2,4}, S[3]={1,4}, S[4]={2,5}, S[5]={3,5}. Для його налаштування на пошук максимальних незалежних множин відповідного графа достатньо в AMPL-коді перший оператор замінити на оператор з описом множини вершин цього графа, а в операторі «data» вказати відповідну графу матрицю суміжності I_G. AMPL-код для знаходження nCalls розв'язків задачі (1), (3), (5) апробовано для формування згуртованих під-команд окремих програмних проектів у складі їх портфеля, тобто розфарбування 25 фахівців – виконавців програмних проектів – різними кольорами так, щоб фахівці, між якими в попередніх проектах мали місце кон- флікти, не могли бути зафарбовані одним і тим же кольором (див. задачу 1 в розд.4). 3. Булеві задачі для ( )K G та алгоритм Візинга-Плесневича Розглянемо таку задачу: знайти K попарно неперетинних незалежних множин графа G , сумарний роз- мір (сума вершин, які входять в незалежні множини) яких є максимальним. Цей розмір позначимо ( )K G . Нехай  0,1kix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в k -ту не- залежну множину вершин графа G ( 1,...,k K= ), та нулю – в протилежному випадку. Щоб знайти ( )K G , до- статньо знайти один із розв'язків задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (6) за обмежень 1, 1,..., , ( , ) ( ),ki kjx x k K i j E G+  =  (7) 1 1, ( ). K ki k x i V G =   (8) Задача (6)–(8) містить ( )K V G булевих змінних та ( )( ) ( )K E G V G + обмежень – лінійних нерівностей. Обмеження (7) означають, що коли в графі G вершини i та j з’єднані ребром, то лише одна з них може належати k -тій незалежній множині вершин графа G . Обмеження (8) означають, що кожна з вершин графа G може належати одній з незалежних множин і гарантують попарну неперетинність незалежних множин у графі G . Число ( )K G та відповідні йому незалежні множини 1S , …, KS можна знайти за допомогою модифікації перших трьох операторів в AMPL-коді: param K:=2; # кількість незалежних множин set V_G := {1,2,3,4,5,6}; # вершини графа set E_G:={(1,2),(1,5),(1,6),(2,3),(2,6),(3,4),(3,6),(4,5),(4,6),(5,6)}; # ребра графа display V_G,E_G; param nv:=card(V_G); set kk:={1..K}; set S{kk} default {}; var xs{k in 1..K, i in 1..card(V_G)} binary; maximize alpha_Gk: sum{k in 1..K, i in 1..nv}xs[k,i]; subject to constr7 {k in 1..K, (i,j) in E_G}: xs[k,i]+xs[k,j] <= 1; subject to constr8 {i in V_G}: sum{k in 1..K} xs[k,i] <= 1; option solver gurobi; # вибір солвера solve; display alpha_Gk; for{k in 1..K} { let S[k] := {j in V_G: xs[k,j]>=0.9}; } display S; Цей AMPL-код налаштований на пошук двох незалежних множин у графі 6W за допомогою розв'язання задачі (6) – (8). Він знаходить незалежні множини: S[1]={1,3}, S[2]={2,5}; яким відповідає 2 5( ) 2C = . Якщо в AMPL-коді перший оператор модифікувати на оператор "param K:=3", то отримаємо 3 5( ) 5C = , якому відпо- відають незалежні множини: S[1]={1,3}, S[2]={2,4}, S[3]={5}. булевих змінних та Методи і засоби програмної інженерії for{i in 2..nCalls} { solve; display alpha_G; if (alpha_G<alphaG1) then break; let nS:=nS union {i}; let S[i] := {j in V_G: xs[j]>=0.99}; } display nCalls,S; # друкуємо кількість запусків солвера та отримані максимальні незалежні множини За п'ять запусків солвера gurobi цей AMPL-код знаходить усі максимальні незалежні множині графа 6W у такому порядку: S[1]={1,3}, S[2]={2,4}, S[3]={1,4}, S[4]={2,5}, S[5]={3,5}. Для його налаштування на пошук максимальних незалежних множин відповідного графа достатньо в AMPL-коді перший оператор замінити на оператор з описом множини вершин цього графа, а в операторі «data» вказати відповідну графу матрицю суміжності I_G. AMPL-код для знаходження nCalls розв'язків задачі (1), (3), (5) апробовано для формування згуртованих під-команд окремих програмних проектів у складі їх портфеля, тобто розфарбування 25 фахівців – виконавців програмних проектів – різними кольорами так, щоб фахівці, між якими в попередніх проектах мали місце кон- флікти, не могли бути зафарбовані одним і тим же кольором (див. задачу 1 в розд.4). 3. Булеві задачі для ( )K G та алгоритм Візинга-Плесневича Розглянемо таку задачу: знайти K попарно неперетинних незалежних множин графа G , сумарний роз- мір (сума вершин, які входять в незалежні множини) яких є максимальним. Цей розмір позначимо ( )K G . Нехай  0,1kix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в k -ту не- залежну множину вершин графа G ( 1,...,k K= ), та нулю – в протилежному випадку. Щоб знайти ( )K G , до- статньо знайти один із розв'язків задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (6) за обмежень 1, 1,..., , ( , ) ( ),ki kjx x k K i j E G+  =  (7) 1 1, ( ). K ki k x i V G =   (8) Задача (6)–(8) містить ( )K V G булевих змінних та ( )( ) ( )K E G V G + обмежень – лінійних нерівностей. Обмеження (7) означають, що коли в графі G вершини i та j з’єднані ребром, то лише одна з них може належати k -тій незалежній множині вершин графа G . Обмеження (8) означають, що кожна з вершин графа G може належати одній з незалежних множин і гарантують попарну неперетинність незалежних множин у графі G . Число ( )K G та відповідні йому незалежні множини 1S , …, KS можна знайти за допомогою модифікації перших трьох операторів в AMPL-коді: param K:=2; # кількість незалежних множин set V_G := {1,2,3,4,5,6}; # вершини графа set E_G:={(1,2),(1,5),(1,6),(2,3),(2,6),(3,4),(3,6),(4,5),(4,6),(5,6)}; # ребра графа display V_G,E_G; param nv:=card(V_G); set kk:={1..K}; set S{kk} default {}; var xs{k in 1..K, i in 1..card(V_G)} binary; maximize alpha_Gk: sum{k in 1..K, i in 1..nv}xs[k,i]; subject to constr7 {k in 1..K, (i,j) in E_G}: xs[k,i]+xs[k,j] <= 1; subject to constr8 {i in V_G}: sum{k in 1..K} xs[k,i] <= 1; option solver gurobi; # вибір солвера solve; display alpha_Gk; for{k in 1..K} { let S[k] := {j in V_G: xs[k,j]>=0.9}; } display S; Цей AMPL-код налаштований на пошук двох незалежних множин у графі 6W за допомогою розв'язання задачі (6) – (8). Він знаходить незалежні множини: S[1]={1,3}, S[2]={2,5}; яким відповідає 2 5( ) 2C = . Якщо в AMPL-коді перший оператор модифікувати на оператор "param K:=3", то отримаємо 3 5( ) 5C = , якому відпо- відають незалежні множини: S[1]={1,3}, S[2]={2,4}, S[3]={5}. обмежень – лінійних нерівно- стей. Обмеження (7) означають, що коли в графі G вершини i та j з’єднані ребром, то лише одна з них може на- лежати k-тій незалежній множині вершин графа G. Обмеження (8) означають, що кожна з вершин графа G може належати одній з незалежних множин і гарантують попарну неперетинність незалежних множин у графі G. Число Методи і засоби програмної інженерії for{i in 2..nCalls} { solve; display alpha_G; if (alpha_G<alphaG1) then break; let nS:=nS union {i}; let S[i] := {j in V_G: xs[j]>=0.99}; } display nCalls,S; # друкуємо кількість запусків солвера та отримані максимальні незалежні множини За п'ять запусків солвера gurobi цей AMPL-код знаходить усі максимальні незалежні множині графа 6W у такому порядку: S[1]={1,3}, S[2]={2,4}, S[3]={1,4}, S[4]={2,5}, S[5]={3,5}. Для його налаштування на пошук максимальних незалежних множин відповідного графа достатньо в AMPL-коді перший оператор замінити на оператор з описом множини вершин цього графа, а в операторі «data» вказати відповідну графу матрицю суміжності I_G. AMPL-код для знаходження nCalls розв'язків задачі (1), (3), (5) апробовано для формування згуртованих під-команд окремих програмних проектів у складі їх портфеля, тобто розфарбування 25 фахівців – виконавців програмних проектів – різними кольорами так, щоб фахівці, між якими в попередніх проектах мали місце кон- флікти, не могли бути зафарбовані одним і тим же кольором (див. задачу 1 в розд.4). 3. Булеві задачі для ( )K G та алгоритм Візинга-Плесневича Розглянемо таку задачу: знайти K попарно неперетинних незалежних множин графа G , сумарний роз- мір (сума вершин, які входять в незалежні множини) яких є максимальним. Цей розмір позначимо ( )K G . Нехай  0,1kix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в k -ту не- залежну множину вершин графа G ( 1,...,k K= ), та нулю – в протилежному випадку. Щоб знайти ( )K G , до- статньо знайти один із розв'язків задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (6) за обмежень 1, 1,..., , ( , ) ( ),ki kjx x k K i j E G+  =  (7) 1 1, ( ). K ki k x i V G =   (8) Задача (6)–(8) містить ( )K V G булевих змінних та ( )( ) ( )K E G V G + обмежень – лінійних нерівностей. Обмеження (7) означають, що коли в графі G вершини i та j з’єднані ребром, то лише одна з них може належати k -тій незалежній множині вершин графа G . Обмеження (8) означають, що кожна з вершин графа G може належати одній з незалежних множин і гарантують попарну неперетинність незалежних множин у графі G . Число ( )K G та відповідні йому незалежні множини 1S , …, KS можна знайти за допомогою модифікації перших трьох операторів в AMPL-коді: param K:=2; # кількість незалежних множин set V_G := {1,2,3,4,5,6}; # вершини графа set E_G:={(1,2),(1,5),(1,6),(2,3),(2,6),(3,4),(3,6),(4,5),(4,6),(5,6)}; # ребра графа display V_G,E_G; param nv:=card(V_G); set kk:={1..K}; set S{kk} default {}; var xs{k in 1..K, i in 1..card(V_G)} binary; maximize alpha_Gk: sum{k in 1..K, i in 1..nv}xs[k,i]; subject to constr7 {k in 1..K, (i,j) in E_G}: xs[k,i]+xs[k,j] <= 1; subject to constr8 {i in V_G}: sum{k in 1..K} xs[k,i] <= 1; option solver gurobi; # вибір солвера solve; display alpha_Gk; for{k in 1..K} { let S[k] := {j in V_G: xs[k,j]>=0.9}; } display S; Цей AMPL-код налаштований на пошук двох незалежних множин у графі 6W за допомогою розв'язання задачі (6) – (8). Він знаходить незалежні множини: S[1]={1,3}, S[2]={2,5}; яким відповідає 2 5( ) 2C = . Якщо в AMPL-коді перший оператор модифікувати на оператор "param K:=3", то отримаємо 3 5( ) 5C = , якому відпо- відають незалежні множини: S[1]={1,3}, S[2]={2,4}, S[3]={5}. та відповідні йому незалежні множини Методи і засоби програмної інженерії for{i in 2..nCalls} { solve; display alpha_G; if (alpha_G<alphaG1) then break; let nS:=nS union {i}; let S[i] := {j in V_G: xs[j]>=0.99}; } display nCalls,S; # друкуємо кількість запусків солвера та отримані максимальні незалежні множини За п'ять запусків солвера gurobi цей AMPL-код знаходить усі максимальні незалежні множині графа 6W у такому порядку: S[1]={1,3}, S[2]={2,4}, S[3]={1,4}, S[4]={2,5}, S[5]={3,5}. Для його налаштування на пошук максимальних незалежних множин відповідного графа достатньо в AMPL-коді перший оператор замінити на оператор з описом множини вершин цього графа, а в операторі «data» вказати відповідну графу матрицю суміжності I_G. AMPL-код для знаходження nCalls розв'язків задачі (1), (3), (5) апробовано для формування згуртованих під-команд окремих програмних проектів у складі їх портфеля, тобто розфарбування 25 фахівців – виконавців програмних проектів – різними кольорами так, щоб фахівці, між якими в попередніх проектах мали місце кон- флікти, не могли бути зафарбовані одним і тим же кольором (див. задачу 1 в розд.4). 3. Булеві задачі для ( )K G та алгоритм Візинга-Плесневича Розглянемо таку задачу: знайти K попарно неперетинних незалежних множин графа G , сумарний роз- мір (сума вершин, які входять в незалежні множини) яких є максимальним. Цей розмір позначимо ( )K G . Нехай  0,1kix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в k -ту не- залежну множину вершин графа G ( 1,...,k K= ), та нулю – в протилежному випадку. Щоб знайти ( )K G , до- статньо знайти один із розв'язків задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (6) за обмежень 1, 1,..., , ( , ) ( ),ki kjx x k K i j E G+  =  (7) 1 1, ( ). K ki k x i V G =   (8) Задача (6)–(8) містить ( )K V G булевих змінних та ( )( ) ( )K E G V G + обмежень – лінійних нерівностей. Обмеження (7) означають, що коли в графі G вершини i та j з’єднані ребром, то лише одна з них може належати k -тій незалежній множині вершин графа G . Обмеження (8) означають, що кожна з вершин графа G може належати одній з незалежних множин і гарантують попарну неперетинність незалежних множин у графі G . Число ( )K G та відповідні йому незалежні множини 1S , …, KS можна знайти за допомогою модифікації перших трьох операторів в AMPL-коді: param K:=2; # кількість незалежних множин set V_G := {1,2,3,4,5,6}; # вершини графа set E_G:={(1,2),(1,5),(1,6),(2,3),(2,6),(3,4),(3,6),(4,5),(4,6),(5,6)}; # ребра графа display V_G,E_G; param nv:=card(V_G); set kk:={1..K}; set S{kk} default {}; var xs{k in 1..K, i in 1..card(V_G)} binary; maximize alpha_Gk: sum{k in 1..K, i in 1..nv}xs[k,i]; subject to constr7 {k in 1..K, (i,j) in E_G}: xs[k,i]+xs[k,j] <= 1; subject to constr8 {i in V_G}: sum{k in 1..K} xs[k,i] <= 1; option solver gurobi; # вибір солвера solve; display alpha_Gk; for{k in 1..K} { let S[k] := {j in V_G: xs[k,j]>=0.9}; } display S; Цей AMPL-код налаштований на пошук двох незалежних множин у графі 6W за допомогою розв'язання задачі (6) – (8). Він знаходить незалежні множини: S[1]={1,3}, S[2]={2,5}; яким відповідає 2 5( ) 2C = . Якщо в AMPL-коді перший оператор модифікувати на оператор "param K:=3", то отримаємо 3 5( ) 5C = , якому відпо- відають незалежні множини: S[1]={1,3}, S[2]={2,4}, S[3]={5}. можна знайти за допомогою модифі- кації перших трьох операторів в AMPL-коді: param K:=2; # кількість незалежних множин set V_G := {1,2,3,4,5,6}; # вершини графа set E_G:={(1,2),(1,5),(1,6),(2,3),(2,6),(3,4),(3,6),(4,5),(4,6),(5,6)}; # ребра графа display V_G,E_G; 79 Методи і засоби програмної інженерії param nv:=card(V_G); set kk:={1..K}; set S{kk} default {}; var xs{k in 1..K, i in 1..card(V_G)} binary; maximize alpha_Gk: sum{k in 1..K, i in 1..nv}xs[k,i]; subject to constr7 {k in 1..K, (i,j) in E_G}: xs[k,i]+xs[k,j] <= 1; subject to constr8 {i in V_G}: sum{k in 1..K} xs[k,i] <= 1; option solver gurobi; # вибір солвера solve; display alpha_Gk; for{k in 1..K} { let S[k] := {j in V_G: xs[k,j]>=0.9}; } display S; Цей AMPL-код налаштований на пошук двох незалежних множин у графі Методи і засоби програмної інженерії for{i in 2..nCalls} { solve; display alpha_G; if (alpha_G<alphaG1) then break; let nS:=nS union {i}; let S[i] := {j in V_G: xs[j]>=0.99}; } display nCalls,S; # друкуємо кількість запусків солвера та отримані максимальні незалежні множини За п'ять запусків солвера gurobi цей AMPL-код знаходить усі максимальні незалежні множині графа 6W у такому порядку: S[1]={1,3}, S[2]={2,4}, S[3]={1,4}, S[4]={2,5}, S[5]={3,5}. Для його налаштування на пошук максимальних незалежних множин відповідного графа достатньо в AMPL-коді перший оператор замінити на оператор з описом множини вершин цього графа, а в операторі «data» вказати відповідну графу матрицю суміжності I_G. AMPL-код для знаходження nCalls розв'язків задачі (1), (3), (5) апробовано для формування згуртованих під-команд окремих програмних проектів у складі їх портфеля, тобто розфарбування 25 фахівців – виконавців програмних проектів – різними кольорами так, щоб фахівці, між якими в попередніх проектах мали місце кон- флікти, не могли бути зафарбовані одним і тим же кольором (див. задачу 1 в розд.4). 3. Булеві задачі для ( )K G та алгоритм Візинга-Плесневича Розглянемо таку задачу: знайти K попарно неперетинних незалежних множин графа G , сумарний роз- мір (сума вершин, які входять в незалежні множини) яких є максимальним. Цей розмір позначимо ( )K G . Нехай  0,1kix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в k -ту не- залежну множину вершин графа G ( 1,...,k K= ), та нулю – в протилежному випадку. Щоб знайти ( )K G , до- статньо знайти один із розв'язків задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (6) за обмежень 1, 1,..., , ( , ) ( ),ki kjx x k K i j E G+  =  (7) 1 1, ( ). K ki k x i V G =   (8) Задача (6)–(8) містить ( )K V G булевих змінних та ( )( ) ( )K E G V G + обмежень – лінійних нерівностей. Обмеження (7) означають, що коли в графі G вершини i та j з’єднані ребром, то лише одна з них може належати k -тій незалежній множині вершин графа G . Обмеження (8) означають, що кожна з вершин графа G може належати одній з незалежних множин і гарантують попарну неперетинність незалежних множин у графі G . Число ( )K G та відповідні йому незалежні множини 1S , …, KS можна знайти за допомогою модифікації перших трьох операторів в AMPL-коді: param K:=2; # кількість незалежних множин set V_G := {1,2,3,4,5,6}; # вершини графа set E_G:={(1,2),(1,5),(1,6),(2,3),(2,6),(3,4),(3,6),(4,5),(4,6),(5,6)}; # ребра графа display V_G,E_G; param nv:=card(V_G); set kk:={1..K}; set S{kk} default {}; var xs{k in 1..K, i in 1..card(V_G)} binary; maximize alpha_Gk: sum{k in 1..K, i in 1..nv}xs[k,i]; subject to constr7 {k in 1..K, (i,j) in E_G}: xs[k,i]+xs[k,j] <= 1; subject to constr8 {i in V_G}: sum{k in 1..K} xs[k,i] <= 1; option solver gurobi; # вибір солвера solve; display alpha_Gk; for{k in 1..K} { let S[k] := {j in V_G: xs[k,j]>=0.9}; } display S; Цей AMPL-код налаштований на пошук двох незалежних множин у графі 6W за допомогою розв'язання задачі (6) – (8). Він знаходить незалежні множини: S[1]={1,3}, S[2]={2,5}; яким відповідає 2 5( ) 2C = . Якщо в AMPL-коді перший оператор модифікувати на оператор "param K:=3", то отримаємо 3 5( ) 5C = , якому відпо- відають незалежні множини: S[1]={1,3}, S[2]={2,4}, S[3]={5}. за допомогою розв’язання задачі (6) – (8). Він знаходить незалежні множини: S[1]={1,3}, S[2]={2,5}; яким відповідає Методи і засоби програмної інженерії for{i in 2..nCalls} { solve; display alpha_G; if (alpha_G<alphaG1) then break; let nS:=nS union {i}; let S[i] := {j in V_G: xs[j]>=0.99}; } display nCalls,S; # друкуємо кількість запусків солвера та отримані максимальні незалежні множини За п'ять запусків солвера gurobi цей AMPL-код знаходить усі максимальні незалежні множині графа 6W у такому порядку: S[1]={1,3}, S[2]={2,4}, S[3]={1,4}, S[4]={2,5}, S[5]={3,5}. Для його налаштування на пошук максимальних незалежних множин відповідного графа достатньо в AMPL-коді перший оператор замінити на оператор з описом множини вершин цього графа, а в операторі «data» вказати відповідну графу матрицю суміжності I_G. AMPL-код для знаходження nCalls розв'язків задачі (1), (3), (5) апробовано для формування згуртованих під-команд окремих програмних проектів у складі їх портфеля, тобто розфарбування 25 фахівців – виконавців програмних проектів – різними кольорами так, щоб фахівці, між якими в попередніх проектах мали місце кон- флікти, не могли бути зафарбовані одним і тим же кольором (див. задачу 1 в розд.4). 3. Булеві задачі для ( )K G та алгоритм Візинга-Плесневича Розглянемо таку задачу: знайти K попарно неперетинних незалежних множин графа G , сумарний роз- мір (сума вершин, які входять в незалежні множини) яких є максимальним. Цей розмір позначимо ( )K G . Нехай  0,1kix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в k -ту не- залежну множину вершин графа G ( 1,...,k K= ), та нулю – в протилежному випадку. Щоб знайти ( )K G , до- статньо знайти один із розв'язків задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (6) за обмежень 1, 1,..., , ( , ) ( ),ki kjx x k K i j E G+  =  (7) 1 1, ( ). K ki k x i V G =   (8) Задача (6)–(8) містить ( )K V G булевих змінних та ( )( ) ( )K E G V G + обмежень – лінійних нерівностей. Обмеження (7) означають, що коли в графі G вершини i та j з’єднані ребром, то лише одна з них може належати k -тій незалежній множині вершин графа G . Обмеження (8) означають, що кожна з вершин графа G може належати одній з незалежних множин і гарантують попарну неперетинність незалежних множин у графі G . Число ( )K G та відповідні йому незалежні множини 1S , …, KS можна знайти за допомогою модифікації перших трьох операторів в AMPL-коді: param K:=2; # кількість незалежних множин set V_G := {1,2,3,4,5,6}; # вершини графа set E_G:={(1,2),(1,5),(1,6),(2,3),(2,6),(3,4),(3,6),(4,5),(4,6),(5,6)}; # ребра графа display V_G,E_G; param nv:=card(V_G); set kk:={1..K}; set S{kk} default {}; var xs{k in 1..K, i in 1..card(V_G)} binary; maximize alpha_Gk: sum{k in 1..K, i in 1..nv}xs[k,i]; subject to constr7 {k in 1..K, (i,j) in E_G}: xs[k,i]+xs[k,j] <= 1; subject to constr8 {i in V_G}: sum{k in 1..K} xs[k,i] <= 1; option solver gurobi; # вибір солвера solve; display alpha_Gk; for{k in 1..K} { let S[k] := {j in V_G: xs[k,j]>=0.9}; } display S; Цей AMPL-код налаштований на пошук двох незалежних множин у графі 6W за допомогою розв'язання задачі (6) – (8). Він знаходить незалежні множини: S[1]={1,3}, S[2]={2,5}; яким відповідає 2 5( ) 2C = . Якщо в AMPL-коді перший оператор модифікувати на оператор "param K:=3", то отримаємо 3 5( ) 5C = , якому відпо- відають незалежні множини: S[1]={1,3}, S[2]={2,4}, S[3]={5}. . Якщо в AMPL-коді перший оператор модифікувати на оператор «param K:=3», то отримаємо Методи і засоби програмної інженерії for{i in 2..nCalls} { solve; display alpha_G; if (alpha_G<alphaG1) then break; let nS:=nS union {i}; let S[i] := {j in V_G: xs[j]>=0.99}; } display nCalls,S; # друкуємо кількість запусків солвера та отримані максимальні незалежні множини За п'ять запусків солвера gurobi цей AMPL-код знаходить усі максимальні незалежні множині графа 6W у такому порядку: S[1]={1,3}, S[2]={2,4}, S[3]={1,4}, S[4]={2,5}, S[5]={3,5}. Для його налаштування на пошук максимальних незалежних множин відповідного графа достатньо в AMPL-коді перший оператор замінити на оператор з описом множини вершин цього графа, а в операторі «data» вказати відповідну графу матрицю суміжності I_G. AMPL-код для знаходження nCalls розв'язків задачі (1), (3), (5) апробовано для формування згуртованих під-команд окремих програмних проектів у складі їх портфеля, тобто розфарбування 25 фахівців – виконавців програмних проектів – різними кольорами так, щоб фахівці, між якими в попередніх проектах мали місце кон- флікти, не могли бути зафарбовані одним і тим же кольором (див. задачу 1 в розд.4). 3. Булеві задачі для ( )K G та алгоритм Візинга-Плесневича Розглянемо таку задачу: знайти K попарно неперетинних незалежних множин графа G , сумарний роз- мір (сума вершин, які входять в незалежні множини) яких є максимальним. Цей розмір позначимо ( )K G . Нехай  0,1kix  – булева змінна, яка дорівнює одиниці, якщо вершина ( )i V G включається в k -ту не- залежну множину вершин графа G ( 1,...,k K= ), та нулю – в протилежному випадку. Щоб знайти ( )K G , до- статньо знайти один із розв'язків задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (6) за обмежень 1, 1,..., , ( , ) ( ),ki kjx x k K i j E G+  =  (7) 1 1, ( ). K ki k x i V G =   (8) Задача (6)–(8) містить ( )K V G булевих змінних та ( )( ) ( )K E G V G + обмежень – лінійних нерівностей. Обмеження (7) означають, що коли в графі G вершини i та j з’єднані ребром, то лише одна з них може належати k -тій незалежній множині вершин графа G . Обмеження (8) означають, що кожна з вершин графа G може належати одній з незалежних множин і гарантують попарну неперетинність незалежних множин у графі G . Число ( )K G та відповідні йому незалежні множини 1S , …, KS можна знайти за допомогою модифікації перших трьох операторів в AMPL-коді: param K:=2; # кількість незалежних множин set V_G := {1,2,3,4,5,6}; # вершини графа set E_G:={(1,2),(1,5),(1,6),(2,3),(2,6),(3,4),(3,6),(4,5),(4,6),(5,6)}; # ребра графа display V_G,E_G; param nv:=card(V_G); set kk:={1..K}; set S{kk} default {}; var xs{k in 1..K, i in 1..card(V_G)} binary; maximize alpha_Gk: sum{k in 1..K, i in 1..nv}xs[k,i]; subject to constr7 {k in 1..K, (i,j) in E_G}: xs[k,i]+xs[k,j] <= 1; subject to constr8 {i in V_G}: sum{k in 1..K} xs[k,i] <= 1; option solver gurobi; # вибір солвера solve; display alpha_Gk; for{k in 1..K} { let S[k] := {j in V_G: xs[k,j]>=0.9}; } display S; Цей AMPL-код налаштований на пошук двох незалежних множин у графі 6W за допомогою розв'язання задачі (6) – (8). Він знаходить незалежні множини: S[1]={1,3}, S[2]={2,5}; яким відповідає 2 5( ) 2C = . Якщо в AMPL-коді перший оператор модифікувати на оператор "param K:=3", то отримаємо 3 5( ) 5C = , якому відпо- відають незалежні множини: S[1]={1,3}, S[2]={2,4}, S[3]={5}. , якому відповідають незалежні множини: S[1]={1,3}, S[2]={2,4}, S[3]={5}. Якщо для графа [Введите текст] Методи і засоби програмної інженерії [Введите текст] Якщо для графа ( ( ), ( ))G V G E G= у другому операторі описати множину вершин ( )V G , а у третьому – множину ребер ( )E G , то AMPL-код може бути використаний для пошуку ( )K G для того значення параметра "K", який задається у першому операторі. Задача (6) – (8) побудована на основі використання задачі (1), (2) для K копій графа G ( 1K  ). Якщо для цих же копій графа використовувати задачу (1), (3), то задачу для знаходження ( )K G можна записати за допомогою задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (9) за обмежень ( ) ( ) ( )( ) ( ) 1, , , ( 1) ( ) 1 , {1... }, .kj tj i ki j i t K j V G t k x x d K V G x k K i V G  =   +  + − −       (10) Задача (9), (10) містить ( )K V G булевих змінних та ( )K V G обмежень – лінійних нерівностей. Об- меження (10) означають, що якщо вершина буде належати незалежній множині вершин в k -тій копії графа G , то ні одна з суміжних з нею вершин не може належати цій незалежній множині. Зауважимо, що для пошуку ( )K G та відповідних йому незалежних множин може бути використана за- дача (1), (2) та задача (1), (3) для числа незалежності графа K KG G I=  , отриманого як декартів добуток графа G та повного K -вершинного графа ( ( ), ( ))K K KI V I E I= . Має місце Лема 1. ( ) ( )K KG G I =  . Доведення леми 1 за допомогою формулювання задачі (1), (2) наведено в [3]. Доведення за допомогою формулювання задачі (1), (3) можна зробити за аналогічною схемою. Задачі (6) – (8) та (9), (10) можуть бути використані в алгоритмі Візинга-Плесневича для пошуку ( )G – мінімальної кількості кольорів для розфарбування вершин графа G , щоб суміжні вершини були розфарбовані різними кольорами. В основі алгоритму лежить наступна властивість чисел ( )K G та ( )KG . Лема 2. ( ) ( )  ( ) min : ( ) min : ( )k kG k G I G V k G G V  =  = = = . Перша рівність в лемі 2 є наслідком теореми 1 [3], а друга рівність випливає з леми 1. Для пошуку ( )G у графі, для якого ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , алгоритм Візинга-Плесневича на основі леми 2 та методу дихотомії передбачає такі кроки. Ініціалізація. На ітерації 0k = маємо min 1 = та max ( )V G = . Оскільки ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , то хроматичне число ( )G знаходиться всередині інтервалу min max[ ; ]  . Пе- рейдемо до чергової ітерації зі значеннями min та max . Ітеративний процес. Нехай на k -й ітерації знайдені min та max . Для переходу до ( 1)k + -ї ітерації ви- конуємо наступні дії. 1. Якщо max min 1.5 −  , то max( )G = , itn k= і зупиняємося. 2. Обчислимо ( )min max 2K  = +   , де    – найближче ціле число. Знайдемо ( )K G = , вирішуючи задачу (6) – (8) або задачу (9) – (10), або ( )KG = , вирішуючи задачу (1) – (2) або задачу (1) – (3). 3. Якщо ( )V G = , то max = , інакше min = . 4. Переходимо до ( 1)k + -ї ітерації з новими min та max . Наведений алгоритм знаходить хроматичне число графа G не більше ніж за ( )2(log ( ) 1)V G + ітерацій. 4. Задачі управління програмними проектами Задача 1. Нехай 25 фахівців – виконавців портфеля програмних проектів впорядковані згідно з алфавітгним порядком їх прізвищ і занумеровані числами від 1 до 25. У табл. 2 наведено дані про конфлікти між ними в попередніх проектах: номер фахівця (перша колонка), номери фахівців, з якими мав місце конфлікт (друга колонка). Таблиця 2 – Дані щодо конфліктів фахівців для графа 25G Номери фахівців, які конфліктували в попередніх проектах 1 21 10 2,6,16,23,25 19 9,13,17,22,24 2 6,10,11,15,22,23,24 11 2,4,14,15,16,23 20 4,5,12,16,18 3 13,17 12 5,20 21 1,4,8,14 4 5,8,11,14,16,20,21 13 3,7,9,17,19 22 2,6,17,19,24 у другому операторі описати множину вершин [Введите текст] Методи і засоби програмної інженерії [Введите текст] Якщо для графа ( ( ), ( ))G V G E G= у другому операторі описати множину вершин ( )V G , а у третьому – множину ребер ( )E G , то AMPL-код може бути використаний для пошуку ( )K G для того значення параметра "K", який задається у першому операторі. Задача (6) – (8) побудована на основі використання задачі (1), (2) для K копій графа G ( 1K  ). Якщо для цих же копій графа використовувати задачу (1), (3), то задачу для знаходження ( )K G можна записати за допомогою задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (9) за обмежень ( ) ( ) ( )( ) ( ) 1, , , ( 1) ( ) 1 , {1... }, .kj tj i ki j i t K j V G t k x x d K V G x k K i V G  =   +  + − −       (10) Задача (9), (10) містить ( )K V G булевих змінних та ( )K V G обмежень – лінійних нерівностей. Об- меження (10) означають, що якщо вершина буде належати незалежній множині вершин в k -тій копії графа G , то ні одна з суміжних з нею вершин не може належати цій незалежній множині. Зауважимо, що для пошуку ( )K G та відповідних йому незалежних множин може бути використана за- дача (1), (2) та задача (1), (3) для числа незалежності графа K KG G I=  , отриманого як декартів добуток графа G та повного K -вершинного графа ( ( ), ( ))K K KI V I E I= . Має місце Лема 1. ( ) ( )K KG G I =  . Доведення леми 1 за допомогою формулювання задачі (1), (2) наведено в [3]. Доведення за допомогою формулювання задачі (1), (3) можна зробити за аналогічною схемою. Задачі (6) – (8) та (9), (10) можуть бути використані в алгоритмі Візинга-Плесневича для пошуку ( )G – мінімальної кількості кольорів для розфарбування вершин графа G , щоб суміжні вершини були розфарбовані різними кольорами. В основі алгоритму лежить наступна властивість чисел ( )K G та ( )KG . Лема 2. ( ) ( )  ( ) min : ( ) min : ( )k kG k G I G V k G G V  =  = = = . Перша рівність в лемі 2 є наслідком теореми 1 [3], а друга рівність випливає з леми 1. Для пошуку ( )G у графі, для якого ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , алгоритм Візинга-Плесневича на основі леми 2 та методу дихотомії передбачає такі кроки. Ініціалізація. На ітерації 0k = маємо min 1 = та max ( )V G = . Оскільки ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , то хроматичне число ( )G знаходиться всередині інтервалу min max[ ; ]  . Пе- рейдемо до чергової ітерації зі значеннями min та max . Ітеративний процес. Нехай на k -й ітерації знайдені min та max . Для переходу до ( 1)k + -ї ітерації ви- конуємо наступні дії. 1. Якщо max min 1.5 −  , то max( )G = , itn k= і зупиняємося. 2. Обчислимо ( )min max 2K  = +   , де    – найближче ціле число. Знайдемо ( )K G = , вирішуючи задачу (6) – (8) або задачу (9) – (10), або ( )KG = , вирішуючи задачу (1) – (2) або задачу (1) – (3). 3. Якщо ( )V G = , то max = , інакше min = . 4. Переходимо до ( 1)k + -ї ітерації з новими min та max . Наведений алгоритм знаходить хроматичне число графа G не більше ніж за ( )2(log ( ) 1)V G + ітерацій. 4. Задачі управління програмними проектами Задача 1. Нехай 25 фахівців – виконавців портфеля програмних проектів впорядковані згідно з алфавітгним порядком їх прізвищ і занумеровані числами від 1 до 25. У табл. 2 наведено дані про конфлікти між ними в попередніх проектах: номер фахівця (перша колонка), номери фахівців, з якими мав місце конфлікт (друга колонка). Таблиця 2 – Дані щодо конфліктів фахівців для графа 25G Номери фахівців, які конфліктували в попередніх проектах 1 21 10 2,6,16,23,25 19 9,13,17,22,24 2 6,10,11,15,22,23,24 11 2,4,14,15,16,23 20 4,5,12,16,18 3 13,17 12 5,20 21 1,4,8,14 4 5,8,11,14,16,20,21 13 3,7,9,17,19 22 2,6,17,19,24 , а у третьому – множину ребер [Введите текст] Методи і засоби програмної інженерії [Введите текст] Якщо для графа ( ( ), ( ))G V G E G= у другому операторі описати множину вершин ( )V G , а у третьому – множину ребер ( )E G , то AMPL-код може бути використаний для пошуку ( )K G для того значення параметра "K", який задається у першому операторі. Задача (6) – (8) побудована на основі використання задачі (1), (2) для K копій графа G ( 1K  ). Якщо для цих же копій графа використовувати задачу (1), (3), то задачу для знаходження ( )K G можна записати за допомогою задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (9) за обмежень ( ) ( ) ( )( ) ( ) 1, , , ( 1) ( ) 1 , {1... }, .kj tj i ki j i t K j V G t k x x d K V G x k K i V G  =   +  + − −       (10) Задача (9), (10) містить ( )K V G булевих змінних та ( )K V G обмежень – лінійних нерівностей. Об- меження (10) означають, що якщо вершина буде належати незалежній множині вершин в k -тій копії графа G , то ні одна з суміжних з нею вершин не може належати цій незалежній множині. Зауважимо, що для пошуку ( )K G та відповідних йому незалежних множин може бути використана за- дача (1), (2) та задача (1), (3) для числа незалежності графа K KG G I=  , отриманого як декартів добуток графа G та повного K -вершинного графа ( ( ), ( ))K K KI V I E I= . Має місце Лема 1. ( ) ( )K KG G I =  . Доведення леми 1 за допомогою формулювання задачі (1), (2) наведено в [3]. Доведення за допомогою формулювання задачі (1), (3) можна зробити за аналогічною схемою. Задачі (6) – (8) та (9), (10) можуть бути використані в алгоритмі Візинга-Плесневича для пошуку ( )G – мінімальної кількості кольорів для розфарбування вершин графа G , щоб суміжні вершини були розфарбовані різними кольорами. В основі алгоритму лежить наступна властивість чисел ( )K G та ( )KG . Лема 2. ( ) ( )  ( ) min : ( ) min : ( )k kG k G I G V k G G V  =  = = = . Перша рівність в лемі 2 є наслідком теореми 1 [3], а друга рівність випливає з леми 1. Для пошуку ( )G у графі, для якого ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , алгоритм Візинга-Плесневича на основі леми 2 та методу дихотомії передбачає такі кроки. Ініціалізація. На ітерації 0k = маємо min 1 = та max ( )V G = . Оскільки ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , то хроматичне число ( )G знаходиться всередині інтервалу min max[ ; ]  . Пе- рейдемо до чергової ітерації зі значеннями min та max . Ітеративний процес. Нехай на k -й ітерації знайдені min та max . Для переходу до ( 1)k + -ї ітерації ви- конуємо наступні дії. 1. Якщо max min 1.5 −  , то max( )G = , itn k= і зупиняємося. 2. Обчислимо ( )min max 2K  = +   , де    – найближче ціле число. Знайдемо ( )K G = , вирішуючи задачу (6) – (8) або задачу (9) – (10), або ( )KG = , вирішуючи задачу (1) – (2) або задачу (1) – (3). 3. Якщо ( )V G = , то max = , інакше min = . 4. Переходимо до ( 1)k + -ї ітерації з новими min та max . Наведений алгоритм знаходить хроматичне число графа G не більше ніж за ( )2(log ( ) 1)V G + ітерацій. 4. Задачі управління програмними проектами Задача 1. Нехай 25 фахівців – виконавців портфеля програмних проектів впорядковані згідно з алфавітгним порядком їх прізвищ і занумеровані числами від 1 до 25. У табл. 2 наведено дані про конфлікти між ними в попередніх проектах: номер фахівця (перша колонка), номери фахівців, з якими мав місце конфлікт (друга колонка). Таблиця 2 – Дані щодо конфліктів фахівців для графа 25G Номери фахівців, які конфліктували в попередніх проектах 1 21 10 2,6,16,23,25 19 9,13,17,22,24 2 6,10,11,15,22,23,24 11 2,4,14,15,16,23 20 4,5,12,16,18 3 13,17 12 5,20 21 1,4,8,14 4 5,8,11,14,16,20,21 13 3,7,9,17,19 22 2,6,17,19,24 , то AMPL-код може бути використаний для пошуку [Введите текст] Методи і засоби програмної інженерії [Введите текст] Якщо для графа ( ( ), ( ))G V G E G= у другому операторі описати множину вершин ( )V G , а у третьому – множину ребер ( )E G , то AMPL-код може бути використаний для пошуку ( )K G для того значення параметра "K", який задається у першому операторі. Задача (6) – (8) побудована на основі використання задачі (1), (2) для K копій графа G ( 1K  ). Якщо для цих же копій графа використовувати задачу (1), (3), то задачу для знаходження ( )K G можна записати за допомогою задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (9) за обмежень ( ) ( ) ( )( ) ( ) 1, , , ( 1) ( ) 1 , {1... }, .kj tj i ki j i t K j V G t k x x d K V G x k K i V G  =   +  + − −       (10) Задача (9), (10) містить ( )K V G булевих змінних та ( )K V G обмежень – лінійних нерівностей. Об- меження (10) означають, що якщо вершина буде належати незалежній множині вершин в k -тій копії графа G , то ні одна з суміжних з нею вершин не може належати цій незалежній множині. Зауважимо, що для пошуку ( )K G та відповідних йому незалежних множин може бути використана за- дача (1), (2) та задача (1), (3) для числа незалежності графа K KG G I=  , отриманого як декартів добуток графа G та повного K -вершинного графа ( ( ), ( ))K K KI V I E I= . Має місце Лема 1. ( ) ( )K KG G I =  . Доведення леми 1 за допомогою формулювання задачі (1), (2) наведено в [3]. Доведення за допомогою формулювання задачі (1), (3) можна зробити за аналогічною схемою. Задачі (6) – (8) та (9), (10) можуть бути використані в алгоритмі Візинга-Плесневича для пошуку ( )G – мінімальної кількості кольорів для розфарбування вершин графа G , щоб суміжні вершини були розфарбовані різними кольорами. В основі алгоритму лежить наступна властивість чисел ( )K G та ( )KG . Лема 2. ( ) ( )  ( ) min : ( ) min : ( )k kG k G I G V k G G V  =  = = = . Перша рівність в лемі 2 є наслідком теореми 1 [3], а друга рівність випливає з леми 1. Для пошуку ( )G у графі, для якого ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , алгоритм Візинга-Плесневича на основі леми 2 та методу дихотомії передбачає такі кроки. Ініціалізація. На ітерації 0k = маємо min 1 = та max ( )V G = . Оскільки ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , то хроматичне число ( )G знаходиться всередині інтервалу min max[ ; ]  . Пе- рейдемо до чергової ітерації зі значеннями min та max . Ітеративний процес. Нехай на k -й ітерації знайдені min та max . Для переходу до ( 1)k + -ї ітерації ви- конуємо наступні дії. 1. Якщо max min 1.5 −  , то max( )G = , itn k= і зупиняємося. 2. Обчислимо ( )min max 2K  = +   , де    – найближче ціле число. Знайдемо ( )K G = , вирішуючи задачу (6) – (8) або задачу (9) – (10), або ( )KG = , вирішуючи задачу (1) – (2) або задачу (1) – (3). 3. Якщо ( )V G = , то max = , інакше min = . 4. Переходимо до ( 1)k + -ї ітерації з новими min та max . Наведений алгоритм знаходить хроматичне число графа G не більше ніж за ( )2(log ( ) 1)V G + ітерацій. 4. Задачі управління програмними проектами Задача 1. Нехай 25 фахівців – виконавців портфеля програмних проектів впорядковані згідно з алфавітгним порядком їх прізвищ і занумеровані числами від 1 до 25. У табл. 2 наведено дані про конфлікти між ними в попередніх проектах: номер фахівця (перша колонка), номери фахівців, з якими мав місце конфлікт (друга колонка). Таблиця 2 – Дані щодо конфліктів фахівців для графа 25G Номери фахівців, які конфліктували в попередніх проектах 1 21 10 2,6,16,23,25 19 9,13,17,22,24 2 6,10,11,15,22,23,24 11 2,4,14,15,16,23 20 4,5,12,16,18 3 13,17 12 5,20 21 1,4,8,14 4 5,8,11,14,16,20,21 13 3,7,9,17,19 22 2,6,17,19,24 для того значення параметра «K», який задається у першому операторі. Задача (6) – (8) побудована на основі використання задачі (1), (2) для K копій графа [Введите текст] Методи і засоби програмної інженерії [Введите текст] Якщо для графа ( ( ), ( ))G V G E G= у другому операторі описати множину вершин ( )V G , а у третьому – множину ребер ( )E G , то AMPL-код може бути використаний для пошуку ( )K G для того значення параметра "K", який задається у першому операторі. Задача (6) – (8) побудована на основі використання задачі (1), (2) для K копій графа G ( 1K  ). Якщо для цих же копій графа використовувати задачу (1), (3), то задачу для знаходження ( )K G можна записати за допомогою задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (9) за обмежень ( ) ( ) ( )( ) ( ) 1, , , ( 1) ( ) 1 , {1... }, .kj tj i ki j i t K j V G t k x x d K V G x k K i V G  =   +  + − −       (10) Задача (9), (10) містить ( )K V G булевих змінних та ( )K V G обмежень – лінійних нерівностей. Об- меження (10) означають, що якщо вершина буде належати незалежній множині вершин в k -тій копії графа G , то ні одна з суміжних з нею вершин не може належати цій незалежній множині. Зауважимо, що для пошуку ( )K G та відповідних йому незалежних множин може бути використана за- дача (1), (2) та задача (1), (3) для числа незалежності графа K KG G I=  , отриманого як декартів добуток графа G та повного K -вершинного графа ( ( ), ( ))K K KI V I E I= . Має місце Лема 1. ( ) ( )K KG G I =  . Доведення леми 1 за допомогою формулювання задачі (1), (2) наведено в [3]. Доведення за допомогою формулювання задачі (1), (3) можна зробити за аналогічною схемою. Задачі (6) – (8) та (9), (10) можуть бути використані в алгоритмі Візинга-Плесневича для пошуку ( )G – мінімальної кількості кольорів для розфарбування вершин графа G , щоб суміжні вершини були розфарбовані різними кольорами. В основі алгоритму лежить наступна властивість чисел ( )K G та ( )KG . Лема 2. ( ) ( )  ( ) min : ( ) min : ( )k kG k G I G V k G G V  =  = = = . Перша рівність в лемі 2 є наслідком теореми 1 [3], а друга рівність випливає з леми 1. Для пошуку ( )G у графі, для якого ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , алгоритм Візинга-Плесневича на основі леми 2 та методу дихотомії передбачає такі кроки. Ініціалізація. На ітерації 0k = маємо min 1 = та max ( )V G = . Оскільки ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , то хроматичне число ( )G знаходиться всередині інтервалу min max[ ; ]  . Пе- рейдемо до чергової ітерації зі значеннями min та max . Ітеративний процес. Нехай на k -й ітерації знайдені min та max . Для переходу до ( 1)k + -ї ітерації ви- конуємо наступні дії. 1. Якщо max min 1.5 −  , то max( )G = , itn k= і зупиняємося. 2. Обчислимо ( )min max 2K  = +   , де    – найближче ціле число. Знайдемо ( )K G = , вирішуючи задачу (6) – (8) або задачу (9) – (10), або ( )KG = , вирішуючи задачу (1) – (2) або задачу (1) – (3). 3. Якщо ( )V G = , то max = , інакше min = . 4. Переходимо до ( 1)k + -ї ітерації з новими min та max . Наведений алгоритм знаходить хроматичне число графа G не більше ніж за ( )2(log ( ) 1)V G + ітерацій. 4. Задачі управління програмними проектами Задача 1. Нехай 25 фахівців – виконавців портфеля програмних проектів впорядковані згідно з алфавітгним порядком їх прізвищ і занумеровані числами від 1 до 25. У табл. 2 наведено дані про конфлікти між ними в попередніх проектах: номер фахівця (перша колонка), номери фахівців, з якими мав місце конфлікт (друга колонка). Таблиця 2 – Дані щодо конфліктів фахівців для графа 25G Номери фахівців, які конфліктували в попередніх проектах 1 21 10 2,6,16,23,25 19 9,13,17,22,24 2 6,10,11,15,22,23,24 11 2,4,14,15,16,23 20 4,5,12,16,18 3 13,17 12 5,20 21 1,4,8,14 4 5,8,11,14,16,20,21 13 3,7,9,17,19 22 2,6,17,19,24 Якщо для цих же копій графа використовувати задачу (1), (3), то задачу для знаходження [Введите текст] Методи і засоби програмної інженерії [Введите текст] Якщо для графа ( ( ), ( ))G V G E G= у другому операторі описати множину вершин ( )V G , а у третьому – множину ребер ( )E G , то AMPL-код може бути використаний для пошуку ( )K G для того значення параметра "K", який задається у першому операторі. Задача (6) – (8) побудована на основі використання задачі (1), (2) для K копій графа G ( 1K  ). Якщо для цих же копій графа використовувати задачу (1), (3), то задачу для знаходження ( )K G можна записати за допомогою задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (9) за обмежень ( ) ( ) ( )( ) ( ) 1, , , ( 1) ( ) 1 , {1... }, .kj tj i ki j i t K j V G t k x x d K V G x k K i V G  =   +  + − −       (10) Задача (9), (10) містить ( )K V G булевих змінних та ( )K V G обмежень – лінійних нерівностей. Об- меження (10) означають, що якщо вершина буде належати незалежній множині вершин в k -тій копії графа G , то ні одна з суміжних з нею вершин не може належати цій незалежній множині. Зауважимо, що для пошуку ( )K G та відповідних йому незалежних множин може бути використана за- дача (1), (2) та задача (1), (3) для числа незалежності графа K KG G I=  , отриманого як декартів добуток графа G та повного K -вершинного графа ( ( ), ( ))K K KI V I E I= . Має місце Лема 1. ( ) ( )K KG G I =  . Доведення леми 1 за допомогою формулювання задачі (1), (2) наведено в [3]. Доведення за допомогою формулювання задачі (1), (3) можна зробити за аналогічною схемою. Задачі (6) – (8) та (9), (10) можуть бути використані в алгоритмі Візинга-Плесневича для пошуку ( )G – мінімальної кількості кольорів для розфарбування вершин графа G , щоб суміжні вершини були розфарбовані різними кольорами. В основі алгоритму лежить наступна властивість чисел ( )K G та ( )KG . Лема 2. ( ) ( )  ( ) min : ( ) min : ( )k kG k G I G V k G G V  =  = = = . Перша рівність в лемі 2 є наслідком теореми 1 [3], а друга рівність випливає з леми 1. Для пошуку ( )G у графі, для якого ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , алгоритм Візинга-Плесневича на основі леми 2 та методу дихотомії передбачає такі кроки. Ініціалізація. На ітерації 0k = маємо min 1 = та max ( )V G = . Оскільки ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , то хроматичне число ( )G знаходиться всередині інтервалу min max[ ; ]  . Пе- рейдемо до чергової ітерації зі значеннями min та max . Ітеративний процес. Нехай на k -й ітерації знайдені min та max . Для переходу до ( 1)k + -ї ітерації ви- конуємо наступні дії. 1. Якщо max min 1.5 −  , то max( )G = , itn k= і зупиняємося. 2. Обчислимо ( )min max 2K  = +   , де    – найближче ціле число. Знайдемо ( )K G = , вирішуючи задачу (6) – (8) або задачу (9) – (10), або ( )KG = , вирішуючи задачу (1) – (2) або задачу (1) – (3). 3. Якщо ( )V G = , то max = , інакше min = . 4. Переходимо до ( 1)k + -ї ітерації з новими min та max . Наведений алгоритм знаходить хроматичне число графа G не більше ніж за ( )2(log ( ) 1)V G + ітерацій. 4. Задачі управління програмними проектами Задача 1. Нехай 25 фахівців – виконавців портфеля програмних проектів впорядковані згідно з алфавітгним порядком їх прізвищ і занумеровані числами від 1 до 25. У табл. 2 наведено дані про конфлікти між ними в попередніх проектах: номер фахівця (перша колонка), номери фахівців, з якими мав місце конфлікт (друга колонка). Таблиця 2 – Дані щодо конфліктів фахівців для графа 25G Номери фахівців, які конфліктували в попередніх проектах 1 21 10 2,6,16,23,25 19 9,13,17,22,24 2 6,10,11,15,22,23,24 11 2,4,14,15,16,23 20 4,5,12,16,18 3 13,17 12 5,20 21 1,4,8,14 4 5,8,11,14,16,20,21 13 3,7,9,17,19 22 2,6,17,19,24 можна записати за допомогою задачі булевого лінійного програмування: [Введите текст] Методи і засоби програмної інженерії [Введите текст] Якщо для графа ( ( ), ( ))G V G E G= у другому операторі описати множину вершин ( )V G , а у третьому – множину ребер ( )E G , то AMPL-код може бути використаний для пошуку ( )K G для того значення параметра "K", який задається у першому операторі. Задача (6) – (8) побудована на основі використання задачі (1), (2) для K копій графа G ( 1K  ). Якщо для цих же копій графа використовувати задачу (1), (3), то задачу для знаходження ( )K G можна записати за допомогою задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (9) за обмежень ( ) ( ) ( )( ) ( ) 1, , , ( 1) ( ) 1 , {1... }, .kj tj i ki j i t K j V G t k x x d K V G x k K i V G  =   +  + − −       (10) Задача (9), (10) містить ( )K V G булевих змінних та ( )K V G обмежень – лінійних нерівностей. Об- меження (10) означають, що якщо вершина буде належати незалежній множині вершин в k -тій копії графа G , то ні одна з суміжних з нею вершин не може належати цій незалежній множині. Зауважимо, що для пошуку ( )K G та відповідних йому незалежних множин може бути використана за- дача (1), (2) та задача (1), (3) для числа незалежності графа K KG G I=  , отриманого як декартів добуток графа G та повного K -вершинного графа ( ( ), ( ))K K KI V I E I= . Має місце Лема 1. ( ) ( )K KG G I =  . Доведення леми 1 за допомогою формулювання задачі (1), (2) наведено в [3]. Доведення за допомогою формулювання задачі (1), (3) можна зробити за аналогічною схемою. Задачі (6) – (8) та (9), (10) можуть бути використані в алгоритмі Візинга-Плесневича для пошуку ( )G – мінімальної кількості кольорів для розфарбування вершин графа G , щоб суміжні вершини були розфарбовані різними кольорами. В основі алгоритму лежить наступна властивість чисел ( )K G та ( )KG . Лема 2. ( ) ( )  ( ) min : ( ) min : ( )k kG k G I G V k G G V  =  = = = . Перша рівність в лемі 2 є наслідком теореми 1 [3], а друга рівність випливає з леми 1. Для пошуку ( )G у графі, для якого ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , алгоритм Візинга-Плесневича на основі леми 2 та методу дихотомії передбачає такі кроки. Ініціалізація. На ітерації 0k = маємо min 1 = та max ( )V G = . Оскільки ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , то хроматичне число ( )G знаходиться всередині інтервалу min max[ ; ]  . Пе- рейдемо до чергової ітерації зі значеннями min та max . Ітеративний процес. Нехай на k -й ітерації знайдені min та max . Для переходу до ( 1)k + -ї ітерації ви- конуємо наступні дії. 1. Якщо max min 1.5 −  , то max( )G = , itn k= і зупиняємося. 2. Обчислимо ( )min max 2K  = +   , де    – найближче ціле число. Знайдемо ( )K G = , вирішуючи задачу (6) – (8) або задачу (9) – (10), або ( )KG = , вирішуючи задачу (1) – (2) або задачу (1) – (3). 3. Якщо ( )V G = , то max = , інакше min = . 4. Переходимо до ( 1)k + -ї ітерації з новими min та max . Наведений алгоритм знаходить хроматичне число графа G не більше ніж за ( )2(log ( ) 1)V G + ітерацій. 4. Задачі управління програмними проектами Задача 1. Нехай 25 фахівців – виконавців портфеля програмних проектів впорядковані згідно з алфавітгним порядком їх прізвищ і занумеровані числами від 1 до 25. У табл. 2 наведено дані про конфлікти між ними в попередніх проектах: номер фахівця (перша колонка), номери фахівців, з якими мав місце конфлікт (друга колонка). Таблиця 2 – Дані щодо конфліктів фахівців для графа 25G Номери фахівців, які конфліктували в попередніх проектах 1 21 10 2,6,16,23,25 19 9,13,17,22,24 2 6,10,11,15,22,23,24 11 2,4,14,15,16,23 20 4,5,12,16,18 3 13,17 12 5,20 21 1,4,8,14 4 5,8,11,14,16,20,21 13 3,7,9,17,19 22 2,6,17,19,24 (9) за обмежень [Введите текст] Методи і засоби програмної інженерії [Введите текст] Якщо для графа ( ( ), ( ))G V G E G= у другому операторі описати множину вершин ( )V G , а у третьому – множину ребер ( )E G , то AMPL-код може бути використаний для пошуку ( )K G для того значення параметра "K", який задається у першому операторі. Задача (6) – (8) побудована на основі використання задачі (1), (2) для K копій графа G ( 1K  ). Якщо для цих же копій графа використовувати задачу (1), (3), то задачу для знаходження ( )K G можна записати за допомогою задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (9) за обмежень ( ) ( ) ( )( ) ( ) 1, , , ( 1) ( ) 1 , {1... }, .kj tj i ki j i t K j V G t k x x d K V G x k K i V G  =   +  + − −       (10) Задача (9), (10) містить ( )K V G булевих змінних та ( )K V G обмежень – лінійних нерівностей. Об- меження (10) означають, що якщо вершина буде належати незалежній множині вершин в k -тій копії графа G , то ні одна з суміжних з нею вершин не може належати цій незалежній множині. Зауважимо, що для пошуку ( )K G та відповідних йому незалежних множин може бути використана за- дача (1), (2) та задача (1), (3) для числа незалежності графа K KG G I=  , отриманого як декартів добуток графа G та повного K -вершинного графа ( ( ), ( ))K K KI V I E I= . Має місце Лема 1. ( ) ( )K KG G I =  . Доведення леми 1 за допомогою формулювання задачі (1), (2) наведено в [3]. Доведення за допомогою формулювання задачі (1), (3) можна зробити за аналогічною схемою. Задачі (6) – (8) та (9), (10) можуть бути використані в алгоритмі Візинга-Плесневича для пошуку ( )G – мінімальної кількості кольорів для розфарбування вершин графа G , щоб суміжні вершини були розфарбовані різними кольорами. В основі алгоритму лежить наступна властивість чисел ( )K G та ( )KG . Лема 2. ( ) ( )  ( ) min : ( ) min : ( )k kG k G I G V k G G V  =  = = = . Перша рівність в лемі 2 є наслідком теореми 1 [3], а друга рівність випливає з леми 1. Для пошуку ( )G у графі, для якого ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , алгоритм Візинга-Плесневича на основі леми 2 та методу дихотомії передбачає такі кроки. Ініціалізація. На ітерації 0k = маємо min 1 = та max ( )V G = . Оскільки ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , то хроматичне число ( )G знаходиться всередині інтервалу min max[ ; ]  . Пе- рейдемо до чергової ітерації зі значеннями min та max . Ітеративний процес. Нехай на k -й ітерації знайдені min та max . Для переходу до ( 1)k + -ї ітерації ви- конуємо наступні дії. 1. Якщо max min 1.5 −  , то max( )G = , itn k= і зупиняємося. 2. Обчислимо ( )min max 2K  = +   , де    – найближче ціле число. Знайдемо ( )K G = , вирішуючи задачу (6) – (8) або задачу (9) – (10), або ( )KG = , вирішуючи задачу (1) – (2) або задачу (1) – (3). 3. Якщо ( )V G = , то max = , інакше min = . 4. Переходимо до ( 1)k + -ї ітерації з новими min та max . Наведений алгоритм знаходить хроматичне число графа G не більше ніж за ( )2(log ( ) 1)V G + ітерацій. 4. Задачі управління програмними проектами Задача 1. Нехай 25 фахівців – виконавців портфеля програмних проектів впорядковані згідно з алфавітгним порядком їх прізвищ і занумеровані числами від 1 до 25. У табл. 2 наведено дані про конфлікти між ними в попередніх проектах: номер фахівця (перша колонка), номери фахівців, з якими мав місце конфлікт (друга колонка). Таблиця 2 – Дані щодо конфліктів фахівців для графа 25G Номери фахівців, які конфліктували в попередніх проектах 1 21 10 2,6,16,23,25 19 9,13,17,22,24 2 6,10,11,15,22,23,24 11 2,4,14,15,16,23 20 4,5,12,16,18 3 13,17 12 5,20 21 1,4,8,14 4 5,8,11,14,16,20,21 13 3,7,9,17,19 22 2,6,17,19,24 (10) Задача (9), (10) містить [Введите текст] Методи і засоби програмної інженерії [Введите текст] Якщо для графа ( ( ), ( ))G V G E G= у другому операторі описати множину вершин ( )V G , а у третьому – множину ребер ( )E G , то AMPL-код може бути використаний для пошуку ( )K G для того значення параметра "K", який задається у першому операторі. Задача (6) – (8) побудована на основі використання задачі (1), (2) для K копій графа G ( 1K  ). Якщо для цих же копій графа використовувати задачу (1), (3), то задачу для знаходження ( )K G можна записати за допомогою задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (9) за обмежень ( ) ( ) ( )( ) ( ) 1, , , ( 1) ( ) 1 , {1... }, .kj tj i ki j i t K j V G t k x x d K V G x k K i V G  =   +  + − −       (10) Задача (9), (10) містить ( )K V G булевих змінних та ( )K V G обмежень – лінійних нерівностей. Об- меження (10) означають, що якщо вершина буде належати незалежній множині вершин в k -тій копії графа G , то ні одна з суміжних з нею вершин не може належати цій незалежній множині. Зауважимо, що для пошуку ( )K G та відповідних йому незалежних множин може бути використана за- дача (1), (2) та задача (1), (3) для числа незалежності графа K KG G I=  , отриманого як декартів добуток графа G та повного K -вершинного графа ( ( ), ( ))K K KI V I E I= . Має місце Лема 1. ( ) ( )K KG G I =  . Доведення леми 1 за допомогою формулювання задачі (1), (2) наведено в [3]. Доведення за допомогою формулювання задачі (1), (3) можна зробити за аналогічною схемою. Задачі (6) – (8) та (9), (10) можуть бути використані в алгоритмі Візинга-Плесневича для пошуку ( )G – мінімальної кількості кольорів для розфарбування вершин графа G , щоб суміжні вершини були розфарбовані різними кольорами. В основі алгоритму лежить наступна властивість чисел ( )K G та ( )KG . Лема 2. ( ) ( )  ( ) min : ( ) min : ( )k kG k G I G V k G G V  =  = = = . Перша рівність в лемі 2 є наслідком теореми 1 [3], а друга рівність випливає з леми 1. Для пошуку ( )G у графі, для якого ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , алгоритм Візинга-Плесневича на основі леми 2 та методу дихотомії передбачає такі кроки. Ініціалізація. На ітерації 0k = маємо min 1 = та max ( )V G = . Оскільки ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , то хроматичне число ( )G знаходиться всередині інтервалу min max[ ; ]  . Пе- рейдемо до чергової ітерації зі значеннями min та max . Ітеративний процес. Нехай на k -й ітерації знайдені min та max . Для переходу до ( 1)k + -ї ітерації ви- конуємо наступні дії. 1. Якщо max min 1.5 −  , то max( )G = , itn k= і зупиняємося. 2. Обчислимо ( )min max 2K  = +   , де    – найближче ціле число. Знайдемо ( )K G = , вирішуючи задачу (6) – (8) або задачу (9) – (10), або ( )KG = , вирішуючи задачу (1) – (2) або задачу (1) – (3). 3. Якщо ( )V G = , то max = , інакше min = . 4. Переходимо до ( 1)k + -ї ітерації з новими min та max . Наведений алгоритм знаходить хроматичне число графа G не більше ніж за ( )2(log ( ) 1)V G + ітерацій. 4. Задачі управління програмними проектами Задача 1. Нехай 25 фахівців – виконавців портфеля програмних проектів впорядковані згідно з алфавітгним порядком їх прізвищ і занумеровані числами від 1 до 25. У табл. 2 наведено дані про конфлікти між ними в попередніх проектах: номер фахівця (перша колонка), номери фахівців, з якими мав місце конфлікт (друга колонка). Таблиця 2 – Дані щодо конфліктів фахівців для графа 25G Номери фахівців, які конфліктували в попередніх проектах 1 21 10 2,6,16,23,25 19 9,13,17,22,24 2 6,10,11,15,22,23,24 11 2,4,14,15,16,23 20 4,5,12,16,18 3 13,17 12 5,20 21 1,4,8,14 4 5,8,11,14,16,20,21 13 3,7,9,17,19 22 2,6,17,19,24 булевих змінних та [Введите текст] Методи і засоби програмної інженерії [Введите текст] Якщо для графа ( ( ), ( ))G V G E G= у другому операторі описати множину вершин ( )V G , а у третьому – множину ребер ( )E G , то AMPL-код може бути використаний для пошуку ( )K G для того значення параметра "K", який задається у першому операторі. Задача (6) – (8) побудована на основі використання задачі (1), (2) для K копій графа G ( 1K  ). Якщо для цих же копій графа використовувати задачу (1), (3), то задачу для знаходження ( )K G можна записати за допомогою задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (9) за обмежень ( ) ( ) ( )( ) ( ) 1, , , ( 1) ( ) 1 , {1... }, .kj tj i ki j i t K j V G t k x x d K V G x k K i V G  =   +  + − −       (10) Задача (9), (10) містить ( )K V G булевих змінних та ( )K V G обмежень – лінійних нерівностей. Об- меження (10) означають, що якщо вершина буде належати незалежній множині вершин в k -тій копії графа G , то ні одна з суміжних з нею вершин не може належати цій незалежній множині. Зауважимо, що для пошуку ( )K G та відповідних йому незалежних множин може бути використана за- дача (1), (2) та задача (1), (3) для числа незалежності графа K KG G I=  , отриманого як декартів добуток графа G та повного K -вершинного графа ( ( ), ( ))K K KI V I E I= . Має місце Лема 1. ( ) ( )K KG G I =  . Доведення леми 1 за допомогою формулювання задачі (1), (2) наведено в [3]. Доведення за допомогою формулювання задачі (1), (3) можна зробити за аналогічною схемою. Задачі (6) – (8) та (9), (10) можуть бути використані в алгоритмі Візинга-Плесневича для пошуку ( )G – мінімальної кількості кольорів для розфарбування вершин графа G , щоб суміжні вершини були розфарбовані різними кольорами. В основі алгоритму лежить наступна властивість чисел ( )K G та ( )KG . Лема 2. ( ) ( )  ( ) min : ( ) min : ( )k kG k G I G V k G G V  =  = = = . Перша рівність в лемі 2 є наслідком теореми 1 [3], а друга рівність випливає з леми 1. Для пошуку ( )G у графі, для якого ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , алгоритм Візинга-Плесневича на основі леми 2 та методу дихотомії передбачає такі кроки. Ініціалізація. На ітерації 0k = маємо min 1 = та max ( )V G = . Оскільки ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , то хроматичне число ( )G знаходиться всередині інтервалу min max[ ; ]  . Пе- рейдемо до чергової ітерації зі значеннями min та max . Ітеративний процес. Нехай на k -й ітерації знайдені min та max . Для переходу до ( 1)k + -ї ітерації ви- конуємо наступні дії. 1. Якщо max min 1.5 −  , то max( )G = , itn k= і зупиняємося. 2. Обчислимо ( )min max 2K  = +   , де    – найближче ціле число. Знайдемо ( )K G = , вирішуючи задачу (6) – (8) або задачу (9) – (10), або ( )KG = , вирішуючи задачу (1) – (2) або задачу (1) – (3). 3. Якщо ( )V G = , то max = , інакше min = . 4. Переходимо до ( 1)k + -ї ітерації з новими min та max . Наведений алгоритм знаходить хроматичне число графа G не більше ніж за ( )2(log ( ) 1)V G + ітерацій. 4. Задачі управління програмними проектами Задача 1. Нехай 25 фахівців – виконавців портфеля програмних проектів впорядковані згідно з алфавітгним порядком їх прізвищ і занумеровані числами від 1 до 25. У табл. 2 наведено дані про конфлікти між ними в попередніх проектах: номер фахівця (перша колонка), номери фахівців, з якими мав місце конфлікт (друга колонка). Таблиця 2 – Дані щодо конфліктів фахівців для графа 25G Номери фахівців, які конфліктували в попередніх проектах 1 21 10 2,6,16,23,25 19 9,13,17,22,24 2 6,10,11,15,22,23,24 11 2,4,14,15,16,23 20 4,5,12,16,18 3 13,17 12 5,20 21 1,4,8,14 4 5,8,11,14,16,20,21 13 3,7,9,17,19 22 2,6,17,19,24 обмежень – лінійних нерівностей. Обмеження (10) означають, що якщо вершина буде належати незалежній множині вершин в k-тій копії графа G, то ні одна з суміжних з нею вершин не може належати цій незалежній множині. Зауважимо, що для пошуку [Введите текст] Методи і засоби програмної інженерії [Введите текст] Якщо для графа ( ( ), ( ))G V G E G= у другому операторі описати множину вершин ( )V G , а у третьому – множину ребер ( )E G , то AMPL-код може бути використаний для пошуку ( )K G для того значення параметра "K", який задається у першому операторі. Задача (6) – (8) побудована на основі використання задачі (1), (2) для K копій графа G ( 1K  ). Якщо для цих же копій графа використовувати задачу (1), (3), то задачу для знаходження ( )K G можна записати за допомогою задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (9) за обмежень ( ) ( ) ( )( ) ( ) 1, , , ( 1) ( ) 1 , {1... }, .kj tj i ki j i t K j V G t k x x d K V G x k K i V G  =   +  + − −       (10) Задача (9), (10) містить ( )K V G булевих змінних та ( )K V G обмежень – лінійних нерівностей. Об- меження (10) означають, що якщо вершина буде належати незалежній множині вершин в k -тій копії графа G , то ні одна з суміжних з нею вершин не може належати цій незалежній множині. Зауважимо, що для пошуку ( )K G та відповідних йому незалежних множин може бути використана за- дача (1), (2) та задача (1), (3) для числа незалежності графа K KG G I=  , отриманого як декартів добуток графа G та повного K -вершинного графа ( ( ), ( ))K K KI V I E I= . Має місце Лема 1. ( ) ( )K KG G I =  . Доведення леми 1 за допомогою формулювання задачі (1), (2) наведено в [3]. Доведення за допомогою формулювання задачі (1), (3) можна зробити за аналогічною схемою. Задачі (6) – (8) та (9), (10) можуть бути використані в алгоритмі Візинга-Плесневича для пошуку ( )G – мінімальної кількості кольорів для розфарбування вершин графа G , щоб суміжні вершини були розфарбовані різними кольорами. В основі алгоритму лежить наступна властивість чисел ( )K G та ( )KG . Лема 2. ( ) ( )  ( ) min : ( ) min : ( )k kG k G I G V k G G V  =  = = = . Перша рівність в лемі 2 є наслідком теореми 1 [3], а друга рівність випливає з леми 1. Для пошуку ( )G у графі, для якого ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , алгоритм Візинга-Плесневича на основі леми 2 та методу дихотомії передбачає такі кроки. Ініціалізація. На ітерації 0k = маємо min 1 = та max ( )V G = . Оскільки ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , то хроматичне число ( )G знаходиться всередині інтервалу min max[ ; ]  . Пе- рейдемо до чергової ітерації зі значеннями min та max . Ітеративний процес. Нехай на k -й ітерації знайдені min та max . Для переходу до ( 1)k + -ї ітерації ви- конуємо наступні дії. 1. Якщо max min 1.5 −  , то max( )G = , itn k= і зупиняємося. 2. Обчислимо ( )min max 2K  = +   , де    – найближче ціле число. Знайдемо ( )K G = , вирішуючи задачу (6) – (8) або задачу (9) – (10), або ( )KG = , вирішуючи задачу (1) – (2) або задачу (1) – (3). 3. Якщо ( )V G = , то max = , інакше min = . 4. Переходимо до ( 1)k + -ї ітерації з новими min та max . Наведений алгоритм знаходить хроматичне число графа G не більше ніж за ( )2(log ( ) 1)V G + ітерацій. 4. Задачі управління програмними проектами Задача 1. Нехай 25 фахівців – виконавців портфеля програмних проектів впорядковані згідно з алфавітгним порядком їх прізвищ і занумеровані числами від 1 до 25. У табл. 2 наведено дані про конфлікти між ними в попередніх проектах: номер фахівця (перша колонка), номери фахівців, з якими мав місце конфлікт (друга колонка). Таблиця 2 – Дані щодо конфліктів фахівців для графа 25G Номери фахівців, які конфліктували в попередніх проектах 1 21 10 2,6,16,23,25 19 9,13,17,22,24 2 6,10,11,15,22,23,24 11 2,4,14,15,16,23 20 4,5,12,16,18 3 13,17 12 5,20 21 1,4,8,14 4 5,8,11,14,16,20,21 13 3,7,9,17,19 22 2,6,17,19,24 та відповідних йому незалежних множин може бути використана задача (1), (2) та задача (1), (3) для числа незалежності графа [Введите текст] Методи і засоби програмної інженерії [Введите текст] Якщо для графа ( ( ), ( ))G V G E G= у другому операторі описати множину вершин ( )V G , а у третьому – множину ребер ( )E G , то AMPL-код може бути використаний для пошуку ( )K G для того значення параметра "K", який задається у першому операторі. Задача (6) – (8) побудована на основі використання задачі (1), (2) для K копій графа G ( 1K  ). Якщо для цих же копій графа використовувати задачу (1), (3), то задачу для знаходження ( )K G можна записати за допомогою задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (9) за обмежень ( ) ( ) ( )( ) ( ) 1, , , ( 1) ( ) 1 , {1... }, .kj tj i ki j i t K j V G t k x x d K V G x k K i V G  =   +  + − −       (10) Задача (9), (10) містить ( )K V G булевих змінних та ( )K V G обмежень – лінійних нерівностей. Об- меження (10) означають, що якщо вершина буде належати незалежній множині вершин в k -тій копії графа G , то ні одна з суміжних з нею вершин не може належати цій незалежній множині. Зауважимо, що для пошуку ( )K G та відповідних йому незалежних множин може бути використана за- дача (1), (2) та задача (1), (3) для числа незалежності графа K KG G I=  , отриманого як декартів добуток графа G та повного K -вершинного графа ( ( ), ( ))K K KI V I E I= . Має місце Лема 1. ( ) ( )K KG G I =  . Доведення леми 1 за допомогою формулювання задачі (1), (2) наведено в [3]. Доведення за допомогою формулювання задачі (1), (3) можна зробити за аналогічною схемою. Задачі (6) – (8) та (9), (10) можуть бути використані в алгоритмі Візинга-Плесневича для пошуку ( )G – мінімальної кількості кольорів для розфарбування вершин графа G , щоб суміжні вершини були розфарбовані різними кольорами. В основі алгоритму лежить наступна властивість чисел ( )K G та ( )KG . Лема 2. ( ) ( )  ( ) min : ( ) min : ( )k kG k G I G V k G G V  =  = = = . Перша рівність в лемі 2 є наслідком теореми 1 [3], а друга рівність випливає з леми 1. Для пошуку ( )G у графі, для якого ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , алгоритм Візинга-Плесневича на основі леми 2 та методу дихотомії передбачає такі кроки. Ініціалізація. На ітерації 0k = маємо min 1 = та max ( )V G = . Оскільки ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , то хроматичне число ( )G знаходиться всередині інтервалу min max[ ; ]  . Пе- рейдемо до чергової ітерації зі значеннями min та max . Ітеративний процес. Нехай на k -й ітерації знайдені min та max . Для переходу до ( 1)k + -ї ітерації ви- конуємо наступні дії. 1. Якщо max min 1.5 −  , то max( )G = , itn k= і зупиняємося. 2. Обчислимо ( )min max 2K  = +   , де    – найближче ціле число. Знайдемо ( )K G = , вирішуючи задачу (6) – (8) або задачу (9) – (10), або ( )KG = , вирішуючи задачу (1) – (2) або задачу (1) – (3). 3. Якщо ( )V G = , то max = , інакше min = . 4. Переходимо до ( 1)k + -ї ітерації з новими min та max . Наведений алгоритм знаходить хроматичне число графа G не більше ніж за ( )2(log ( ) 1)V G + ітерацій. 4. Задачі управління програмними проектами Задача 1. Нехай 25 фахівців – виконавців портфеля програмних проектів впорядковані згідно з алфавітгним порядком їх прізвищ і занумеровані числами від 1 до 25. У табл. 2 наведено дані про конфлікти між ними в попередніх проектах: номер фахівця (перша колонка), номери фахівців, з якими мав місце конфлікт (друга колонка). Таблиця 2 – Дані щодо конфліктів фахівців для графа 25G Номери фахівців, які конфліктували в попередніх проектах 1 21 10 2,6,16,23,25 19 9,13,17,22,24 2 6,10,11,15,22,23,24 11 2,4,14,15,16,23 20 4,5,12,16,18 3 13,17 12 5,20 21 1,4,8,14 4 5,8,11,14,16,20,21 13 3,7,9,17,19 22 2,6,17,19,24 , отриманого як декартів добуток графа G та повного K-вершинного графа [Введите текст] Методи і засоби програмної інженерії [Введите текст] Якщо для графа ( ( ), ( ))G V G E G= у другому операторі описати множину вершин ( )V G , а у третьому – множину ребер ( )E G , то AMPL-код може бути використаний для пошуку ( )K G для того значення параметра "K", який задається у першому операторі. Задача (6) – (8) побудована на основі використання задачі (1), (2) для K копій графа G ( 1K  ). Якщо для цих же копій графа використовувати задачу (1), (3), то задачу для знаходження ( )K G можна записати за допомогою задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (9) за обмежень ( ) ( ) ( )( ) ( ) 1, , , ( 1) ( ) 1 , {1... }, .kj tj i ki j i t K j V G t k x x d K V G x k K i V G  =   +  + − −       (10) Задача (9), (10) містить ( )K V G булевих змінних та ( )K V G обмежень – лінійних нерівностей. Об- меження (10) означають, що якщо вершина буде належати незалежній множині вершин в k -тій копії графа G , то ні одна з суміжних з нею вершин не може належати цій незалежній множині. Зауважимо, що для пошуку ( )K G та відповідних йому незалежних множин може бути використана за- дача (1), (2) та задача (1), (3) для числа незалежності графа K KG G I=  , отриманого як декартів добуток графа G та повного K -вершинного графа ( ( ), ( ))K K KI V I E I= . Має місце Лема 1. ( ) ( )K KG G I =  . Доведення леми 1 за допомогою формулювання задачі (1), (2) наведено в [3]. Доведення за допомогою формулювання задачі (1), (3) можна зробити за аналогічною схемою. Задачі (6) – (8) та (9), (10) можуть бути використані в алгоритмі Візинга-Плесневича для пошуку ( )G – мінімальної кількості кольорів для розфарбування вершин графа G , щоб суміжні вершини були розфарбовані різними кольорами. В основі алгоритму лежить наступна властивість чисел ( )K G та ( )KG . Лема 2. ( ) ( )  ( ) min : ( ) min : ( )k kG k G I G V k G G V  =  = = = . Перша рівність в лемі 2 є наслідком теореми 1 [3], а друга рівність випливає з леми 1. Для пошуку ( )G у графі, для якого ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , алгоритм Візинга-Плесневича на основі леми 2 та методу дихотомії передбачає такі кроки. Ініціалізація. На ітерації 0k = маємо min 1 = та max ( )V G = . Оскільки ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , то хроматичне число ( )G знаходиться всередині інтервалу min max[ ; ]  . Пе- рейдемо до чергової ітерації зі значеннями min та max . Ітеративний процес. Нехай на k -й ітерації знайдені min та max . Для переходу до ( 1)k + -ї ітерації ви- конуємо наступні дії. 1. Якщо max min 1.5 −  , то max( )G = , itn k= і зупиняємося. 2. Обчислимо ( )min max 2K  = +   , де    – найближче ціле число. Знайдемо ( )K G = , вирішуючи задачу (6) – (8) або задачу (9) – (10), або ( )KG = , вирішуючи задачу (1) – (2) або задачу (1) – (3). 3. Якщо ( )V G = , то max = , інакше min = . 4. Переходимо до ( 1)k + -ї ітерації з новими min та max . Наведений алгоритм знаходить хроматичне число графа G не більше ніж за ( )2(log ( ) 1)V G + ітерацій. 4. Задачі управління програмними проектами Задача 1. Нехай 25 фахівців – виконавців портфеля програмних проектів впорядковані згідно з алфавітгним порядком їх прізвищ і занумеровані числами від 1 до 25. У табл. 2 наведено дані про конфлікти між ними в попередніх проектах: номер фахівця (перша колонка), номери фахівців, з якими мав місце конфлікт (друга колонка). Таблиця 2 – Дані щодо конфліктів фахівців для графа 25G Номери фахівців, які конфліктували в попередніх проектах 1 21 10 2,6,16,23,25 19 9,13,17,22,24 2 6,10,11,15,22,23,24 11 2,4,14,15,16,23 20 4,5,12,16,18 3 13,17 12 5,20 21 1,4,8,14 4 5,8,11,14,16,20,21 13 3,7,9,17,19 22 2,6,17,19,24 . Має місце Лема 1. [Введите текст] Методи і засоби програмної інженерії [Введите текст] Якщо для графа ( ( ), ( ))G V G E G= у другому операторі описати множину вершин ( )V G , а у третьому – множину ребер ( )E G , то AMPL-код може бути використаний для пошуку ( )K G для того значення параметра "K", який задається у першому операторі. Задача (6) – (8) побудована на основі використання задачі (1), (2) для K копій графа G ( 1K  ). Якщо для цих же копій графа використовувати задачу (1), (3), то задачу для знаходження ( )K G можна записати за допомогою задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (9) за обмежень ( ) ( ) ( )( ) ( ) 1, , , ( 1) ( ) 1 , {1... }, .kj tj i ki j i t K j V G t k x x d K V G x k K i V G  =   +  + − −       (10) Задача (9), (10) містить ( )K V G булевих змінних та ( )K V G обмежень – лінійних нерівностей. Об- меження (10) означають, що якщо вершина буде належати незалежній множині вершин в k -тій копії графа G , то ні одна з суміжних з нею вершин не може належати цій незалежній множині. Зауважимо, що для пошуку ( )K G та відповідних йому незалежних множин може бути використана за- дача (1), (2) та задача (1), (3) для числа незалежності графа K KG G I=  , отриманого як декартів добуток графа G та повного K -вершинного графа ( ( ), ( ))K K KI V I E I= . Має місце Лема 1. ( ) ( )K KG G I =  . Доведення леми 1 за допомогою формулювання задачі (1), (2) наведено в [3]. Доведення за допомогою формулювання задачі (1), (3) можна зробити за аналогічною схемою. Задачі (6) – (8) та (9), (10) можуть бути використані в алгоритмі Візинга-Плесневича для пошуку ( )G – мінімальної кількості кольорів для розфарбування вершин графа G , щоб суміжні вершини були розфарбовані різними кольорами. В основі алгоритму лежить наступна властивість чисел ( )K G та ( )KG . Лема 2. ( ) ( )  ( ) min : ( ) min : ( )k kG k G I G V k G G V  =  = = = . Перша рівність в лемі 2 є наслідком теореми 1 [3], а друга рівність випливає з леми 1. Для пошуку ( )G у графі, для якого ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , алгоритм Візинга-Плесневича на основі леми 2 та методу дихотомії передбачає такі кроки. Ініціалізація. На ітерації 0k = маємо min 1 = та max ( )V G = . Оскільки ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , то хроматичне число ( )G знаходиться всередині інтервалу min max[ ; ]  . Пе- рейдемо до чергової ітерації зі значеннями min та max . Ітеративний процес. Нехай на k -й ітерації знайдені min та max . Для переходу до ( 1)k + -ї ітерації ви- конуємо наступні дії. 1. Якщо max min 1.5 −  , то max( )G = , itn k= і зупиняємося. 2. Обчислимо ( )min max 2K  = +   , де    – найближче ціле число. Знайдемо ( )K G = , вирішуючи задачу (6) – (8) або задачу (9) – (10), або ( )KG = , вирішуючи задачу (1) – (2) або задачу (1) – (3). 3. Якщо ( )V G = , то max = , інакше min = . 4. Переходимо до ( 1)k + -ї ітерації з новими min та max . Наведений алгоритм знаходить хроматичне число графа G не більше ніж за ( )2(log ( ) 1)V G + ітерацій. 4. Задачі управління програмними проектами Задача 1. Нехай 25 фахівців – виконавців портфеля програмних проектів впорядковані згідно з алфавітгним порядком їх прізвищ і занумеровані числами від 1 до 25. У табл. 2 наведено дані про конфлікти між ними в попередніх проектах: номер фахівця (перша колонка), номери фахівців, з якими мав місце конфлікт (друга колонка). Таблиця 2 – Дані щодо конфліктів фахівців для графа 25G Номери фахівців, які конфліктували в попередніх проектах 1 21 10 2,6,16,23,25 19 9,13,17,22,24 2 6,10,11,15,22,23,24 11 2,4,14,15,16,23 20 4,5,12,16,18 3 13,17 12 5,20 21 1,4,8,14 4 5,8,11,14,16,20,21 13 3,7,9,17,19 22 2,6,17,19,24 . Доведення леми 1 за допомогою формулювання задачі (1), (2) наведено в [3]. Доведення за допомогою формулювання задачі (1), (3) можна зробити за аналогічною схемою. Задачі (6) – (8) та (9), (10) можуть бути використані в алгоритмі Візинга-Плесневича для пошуку [Введите текст] Методи і засоби програмної інженерії [Введите текст] Якщо для графа ( ( ), ( ))G V G E G= у другому операторі описати множину вершин ( )V G , а у третьому – множину ребер ( )E G , то AMPL-код може бути використаний для пошуку ( )K G для того значення параметра "K", який задається у першому операторі. Задача (6) – (8) побудована на основі використання задачі (1), (2) для K копій графа G ( 1K  ). Якщо для цих же копій графа використовувати задачу (1), (3), то задачу для знаходження ( )K G можна записати за допомогою задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (9) за обмежень ( ) ( ) ( )( ) ( ) 1, , , ( 1) ( ) 1 , {1... }, .kj tj i ki j i t K j V G t k x x d K V G x k K i V G  =   +  + − −       (10) Задача (9), (10) містить ( )K V G булевих змінних та ( )K V G обмежень – лінійних нерівностей. Об- меження (10) означають, що якщо вершина буде належати незалежній множині вершин в k -тій копії графа G , то ні одна з суміжних з нею вершин не може належати цій незалежній множині. Зауважимо, що для пошуку ( )K G та відповідних йому незалежних множин може бути використана за- дача (1), (2) та задача (1), (3) для числа незалежності графа K KG G I=  , отриманого як декартів добуток графа G та повного K -вершинного графа ( ( ), ( ))K K KI V I E I= . Має місце Лема 1. ( ) ( )K KG G I =  . Доведення леми 1 за допомогою формулювання задачі (1), (2) наведено в [3]. Доведення за допомогою формулювання задачі (1), (3) можна зробити за аналогічною схемою. Задачі (6) – (8) та (9), (10) можуть бути використані в алгоритмі Візинга-Плесневича для пошуку ( )G – мінімальної кількості кольорів для розфарбування вершин графа G , щоб суміжні вершини були розфарбовані різними кольорами. В основі алгоритму лежить наступна властивість чисел ( )K G та ( )KG . Лема 2. ( ) ( )  ( ) min : ( ) min : ( )k kG k G I G V k G G V  =  = = = . Перша рівність в лемі 2 є наслідком теореми 1 [3], а друга рівність випливає з леми 1. Для пошуку ( )G у графі, для якого ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , алгоритм Візинга-Плесневича на основі леми 2 та методу дихотомії передбачає такі кроки. Ініціалізація. На ітерації 0k = маємо min 1 = та max ( )V G = . Оскільки ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , то хроматичне число ( )G знаходиться всередині інтервалу min max[ ; ]  . Пе- рейдемо до чергової ітерації зі значеннями min та max . Ітеративний процес. Нехай на k -й ітерації знайдені min та max . Для переходу до ( 1)k + -ї ітерації ви- конуємо наступні дії. 1. Якщо max min 1.5 −  , то max( )G = , itn k= і зупиняємося. 2. Обчислимо ( )min max 2K  = +   , де    – найближче ціле число. Знайдемо ( )K G = , вирішуючи задачу (6) – (8) або задачу (9) – (10), або ( )KG = , вирішуючи задачу (1) – (2) або задачу (1) – (3). 3. Якщо ( )V G = , то max = , інакше min = . 4. Переходимо до ( 1)k + -ї ітерації з новими min та max . Наведений алгоритм знаходить хроматичне число графа G не більше ніж за ( )2(log ( ) 1)V G + ітерацій. 4. Задачі управління програмними проектами Задача 1. Нехай 25 фахівців – виконавців портфеля програмних проектів впорядковані згідно з алфавітгним порядком їх прізвищ і занумеровані числами від 1 до 25. У табл. 2 наведено дані про конфлікти між ними в попередніх проектах: номер фахівця (перша колонка), номери фахівців, з якими мав місце конфлікт (друга колонка). Таблиця 2 – Дані щодо конфліктів фахівців для графа 25G Номери фахівців, які конфліктували в попередніх проектах 1 21 10 2,6,16,23,25 19 9,13,17,22,24 2 6,10,11,15,22,23,24 11 2,4,14,15,16,23 20 4,5,12,16,18 3 13,17 12 5,20 21 1,4,8,14 4 5,8,11,14,16,20,21 13 3,7,9,17,19 22 2,6,17,19,24 – мінімальної кількості кольорів для розфарбування вершин графа G, щоб суміжні вершини були розфарбовані різними кольорами. В основі алгоритму лежить наступна властивість чисел [Введите текст] Методи і засоби програмної інженерії [Введите текст] Якщо для графа ( ( ), ( ))G V G E G= у другому операторі описати множину вершин ( )V G , а у третьому – множину ребер ( )E G , то AMPL-код може бути використаний для пошуку ( )K G для того значення параметра "K", який задається у першому операторі. Задача (6) – (8) побудована на основі використання задачі (1), (2) для K копій графа G ( 1K  ). Якщо для цих же копій графа використовувати задачу (1), (3), то задачу для знаходження ( )K G можна записати за допомогою задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (9) за обмежень ( ) ( ) ( )( ) ( ) 1, , , ( 1) ( ) 1 , {1... }, .kj tj i ki j i t K j V G t k x x d K V G x k K i V G  =   +  + − −       (10) Задача (9), (10) містить ( )K V G булевих змінних та ( )K V G обмежень – лінійних нерівностей. Об- меження (10) означають, що якщо вершина буде належати незалежній множині вершин в k -тій копії графа G , то ні одна з суміжних з нею вершин не може належати цій незалежній множині. Зауважимо, що для пошуку ( )K G та відповідних йому незалежних множин може бути використана за- дача (1), (2) та задача (1), (3) для числа незалежності графа K KG G I=  , отриманого як декартів добуток графа G та повного K -вершинного графа ( ( ), ( ))K K KI V I E I= . Має місце Лема 1. ( ) ( )K KG G I =  . Доведення леми 1 за допомогою формулювання задачі (1), (2) наведено в [3]. Доведення за допомогою формулювання задачі (1), (3) можна зробити за аналогічною схемою. Задачі (6) – (8) та (9), (10) можуть бути використані в алгоритмі Візинга-Плесневича для пошуку ( )G – мінімальної кількості кольорів для розфарбування вершин графа G , щоб суміжні вершини були розфарбовані різними кольорами. В основі алгоритму лежить наступна властивість чисел ( )K G та ( )KG . Лема 2. ( ) ( )  ( ) min : ( ) min : ( )k kG k G I G V k G G V  =  = = = . Перша рівність в лемі 2 є наслідком теореми 1 [3], а друга рівність випливає з леми 1. Для пошуку ( )G у графі, для якого ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , алгоритм Візинга-Плесневича на основі леми 2 та методу дихотомії передбачає такі кроки. Ініціалізація. На ітерації 0k = маємо min 1 = та max ( )V G = . Оскільки ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , то хроматичне число ( )G знаходиться всередині інтервалу min max[ ; ]  . Пе- рейдемо до чергової ітерації зі значеннями min та max . Ітеративний процес. Нехай на k -й ітерації знайдені min та max . Для переходу до ( 1)k + -ї ітерації ви- конуємо наступні дії. 1. Якщо max min 1.5 −  , то max( )G = , itn k= і зупиняємося. 2. Обчислимо ( )min max 2K  = +   , де    – найближче ціле число. Знайдемо ( )K G = , вирішуючи задачу (6) – (8) або задачу (9) – (10), або ( )KG = , вирішуючи задачу (1) – (2) або задачу (1) – (3). 3. Якщо ( )V G = , то max = , інакше min = . 4. Переходимо до ( 1)k + -ї ітерації з новими min та max . Наведений алгоритм знаходить хроматичне число графа G не більше ніж за ( )2(log ( ) 1)V G + ітерацій. 4. Задачі управління програмними проектами Задача 1. Нехай 25 фахівців – виконавців портфеля програмних проектів впорядковані згідно з алфавітгним порядком їх прізвищ і занумеровані числами від 1 до 25. У табл. 2 наведено дані про конфлікти між ними в попередніх проектах: номер фахівця (перша колонка), номери фахівців, з якими мав місце конфлікт (друга колонка). Таблиця 2 – Дані щодо конфліктів фахівців для графа 25G Номери фахівців, які конфліктували в попередніх проектах 1 21 10 2,6,16,23,25 19 9,13,17,22,24 2 6,10,11,15,22,23,24 11 2,4,14,15,16,23 20 4,5,12,16,18 3 13,17 12 5,20 21 1,4,8,14 4 5,8,11,14,16,20,21 13 3,7,9,17,19 22 2,6,17,19,24 . Лема 2. [Введите текст] Методи і засоби програмної інженерії [Введите текст] Якщо для графа ( ( ), ( ))G V G E G= у другому операторі описати множину вершин ( )V G , а у третьому – множину ребер ( )E G , то AMPL-код може бути використаний для пошуку ( )K G для того значення параметра "K", який задається у першому операторі. Задача (6) – (8) побудована на основі використання задачі (1), (2) для K копій графа G ( 1K  ). Якщо для цих же копій графа використовувати задачу (1), (3), то задачу для знаходження ( )K G можна записати за допомогою задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (9) за обмежень ( ) ( ) ( )( ) ( ) 1, , , ( 1) ( ) 1 , {1... }, .kj tj i ki j i t K j V G t k x x d K V G x k K i V G  =   +  + − −       (10) Задача (9), (10) містить ( )K V G булевих змінних та ( )K V G обмежень – лінійних нерівностей. Об- меження (10) означають, що якщо вершина буде належати незалежній множині вершин в k -тій копії графа G , то ні одна з суміжних з нею вершин не може належати цій незалежній множині. Зауважимо, що для пошуку ( )K G та відповідних йому незалежних множин може бути використана за- дача (1), (2) та задача (1), (3) для числа незалежності графа K KG G I=  , отриманого як декартів добуток графа G та повного K -вершинного графа ( ( ), ( ))K K KI V I E I= . Має місце Лема 1. ( ) ( )K KG G I =  . Доведення леми 1 за допомогою формулювання задачі (1), (2) наведено в [3]. Доведення за допомогою формулювання задачі (1), (3) можна зробити за аналогічною схемою. Задачі (6) – (8) та (9), (10) можуть бути використані в алгоритмі Візинга-Плесневича для пошуку ( )G – мінімальної кількості кольорів для розфарбування вершин графа G , щоб суміжні вершини були розфарбовані різними кольорами. В основі алгоритму лежить наступна властивість чисел ( )K G та ( )KG . Лема 2. ( ) ( )  ( ) min : ( ) min : ( )k kG k G I G V k G G V  =  = = = . Перша рівність в лемі 2 є наслідком теореми 1 [3], а друга рівність випливає з леми 1. Для пошуку ( )G у графі, для якого ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , алгоритм Візинга-Плесневича на основі леми 2 та методу дихотомії передбачає такі кроки. Ініціалізація. На ітерації 0k = маємо min 1 = та max ( )V G = . Оскільки ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , то хроматичне число ( )G знаходиться всередині інтервалу min max[ ; ]  . Пе- рейдемо до чергової ітерації зі значеннями min та max . Ітеративний процес. Нехай на k -й ітерації знайдені min та max . Для переходу до ( 1)k + -ї ітерації ви- конуємо наступні дії. 1. Якщо max min 1.5 −  , то max( )G = , itn k= і зупиняємося. 2. Обчислимо ( )min max 2K  = +   , де    – найближче ціле число. Знайдемо ( )K G = , вирішуючи задачу (6) – (8) або задачу (9) – (10), або ( )KG = , вирішуючи задачу (1) – (2) або задачу (1) – (3). 3. Якщо ( )V G = , то max = , інакше min = . 4. Переходимо до ( 1)k + -ї ітерації з новими min та max . Наведений алгоритм знаходить хроматичне число графа G не більше ніж за ( )2(log ( ) 1)V G + ітерацій. 4. Задачі управління програмними проектами Задача 1. Нехай 25 фахівців – виконавців портфеля програмних проектів впорядковані згідно з алфавітгним порядком їх прізвищ і занумеровані числами від 1 до 25. У табл. 2 наведено дані про конфлікти між ними в попередніх проектах: номер фахівця (перша колонка), номери фахівців, з якими мав місце конфлікт (друга колонка). Таблиця 2 – Дані щодо конфліктів фахівців для графа 25G Номери фахівців, які конфліктували в попередніх проектах 1 21 10 2,6,16,23,25 19 9,13,17,22,24 2 6,10,11,15,22,23,24 11 2,4,14,15,16,23 20 4,5,12,16,18 3 13,17 12 5,20 21 1,4,8,14 4 5,8,11,14,16,20,21 13 3,7,9,17,19 22 2,6,17,19,24 Перша рівність в лемі 2 є наслідком теореми 1 [3], а друга рівність випливає з леми 1. Для пошуку [Введите текст] Методи і засоби програмної інженерії [Введите текст] Якщо для графа ( ( ), ( ))G V G E G= у другому операторі описати множину вершин ( )V G , а у третьому – множину ребер ( )E G , то AMPL-код може бути використаний для пошуку ( )K G для того значення параметра "K", який задається у першому операторі. Задача (6) – (8) побудована на основі використання задачі (1), (2) для K копій графа G ( 1K  ). Якщо для цих же копій графа використовувати задачу (1), (3), то задачу для знаходження ( )K G можна записати за допомогою задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (9) за обмежень ( ) ( ) ( )( ) ( ) 1, , , ( 1) ( ) 1 , {1... }, .kj tj i ki j i t K j V G t k x x d K V G x k K i V G  =   +  + − −       (10) Задача (9), (10) містить ( )K V G булевих змінних та ( )K V G обмежень – лінійних нерівностей. Об- меження (10) означають, що якщо вершина буде належати незалежній множині вершин в k -тій копії графа G , то ні одна з суміжних з нею вершин не може належати цій незалежній множині. Зауважимо, що для пошуку ( )K G та відповідних йому незалежних множин може бути використана за- дача (1), (2) та задача (1), (3) для числа незалежності графа K KG G I=  , отриманого як декартів добуток графа G та повного K -вершинного графа ( ( ), ( ))K K KI V I E I= . Має місце Лема 1. ( ) ( )K KG G I =  . Доведення леми 1 за допомогою формулювання задачі (1), (2) наведено в [3]. Доведення за допомогою формулювання задачі (1), (3) можна зробити за аналогічною схемою. Задачі (6) – (8) та (9), (10) можуть бути використані в алгоритмі Візинга-Плесневича для пошуку ( )G – мінімальної кількості кольорів для розфарбування вершин графа G , щоб суміжні вершини були розфарбовані різними кольорами. В основі алгоритму лежить наступна властивість чисел ( )K G та ( )KG . Лема 2. ( ) ( )  ( ) min : ( ) min : ( )k kG k G I G V k G G V  =  = = = . Перша рівність в лемі 2 є наслідком теореми 1 [3], а друга рівність випливає з леми 1. Для пошуку ( )G у графі, для якого ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , алгоритм Візинга-Плесневича на основі леми 2 та методу дихотомії передбачає такі кроки. Ініціалізація. На ітерації 0k = маємо min 1 = та max ( )V G = . Оскільки ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , то хроматичне число ( )G знаходиться всередині інтервалу min max[ ; ]  . Пе- рейдемо до чергової ітерації зі значеннями min та max . Ітеративний процес. Нехай на k -й ітерації знайдені min та max . Для переходу до ( 1)k + -ї ітерації ви- конуємо наступні дії. 1. Якщо max min 1.5 −  , то max( )G = , itn k= і зупиняємося. 2. Обчислимо ( )min max 2K  = +   , де    – найближче ціле число. Знайдемо ( )K G = , вирішуючи задачу (6) – (8) або задачу (9) – (10), або ( )KG = , вирішуючи задачу (1) – (2) або задачу (1) – (3). 3. Якщо ( )V G = , то max = , інакше min = . 4. Переходимо до ( 1)k + -ї ітерації з новими min та max . Наведений алгоритм знаходить хроматичне число графа G не більше ніж за ( )2(log ( ) 1)V G + ітерацій. 4. Задачі управління програмними проектами Задача 1. Нехай 25 фахівців – виконавців портфеля програмних проектів впорядковані згідно з алфавітгним порядком їх прізвищ і занумеровані числами від 1 до 25. У табл. 2 наведено дані про конфлікти між ними в попередніх проектах: номер фахівця (перша колонка), номери фахівців, з якими мав місце конфлікт (друга колонка). Таблиця 2 – Дані щодо конфліктів фахівців для графа 25G Номери фахівців, які конфліктували в попередніх проектах 1 21 10 2,6,16,23,25 19 9,13,17,22,24 2 6,10,11,15,22,23,24 11 2,4,14,15,16,23 20 4,5,12,16,18 3 13,17 12 5,20 21 1,4,8,14 4 5,8,11,14,16,20,21 13 3,7,9,17,19 22 2,6,17,19,24 у графі, для якого [Введите текст] Методи і засоби програмної інженерії [Введите текст] Якщо для графа ( ( ), ( ))G V G E G= у другому операторі описати множину вершин ( )V G , а у третьому – множину ребер ( )E G , то AMPL-код може бути використаний для пошуку ( )K G для того значення параметра "K", який задається у першому операторі. Задача (6) – (8) побудована на основі використання задачі (1), (2) для K копій графа G ( 1K  ). Якщо для цих же копій графа використовувати задачу (1), (3), то задачу для знаходження ( )K G можна записати за допомогою задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (9) за обмежень ( ) ( ) ( )( ) ( ) 1, , , ( 1) ( ) 1 , {1... }, .kj tj i ki j i t K j V G t k x x d K V G x k K i V G  =   +  + − −       (10) Задача (9), (10) містить ( )K V G булевих змінних та ( )K V G обмежень – лінійних нерівностей. Об- меження (10) означають, що якщо вершина буде належати незалежній множині вершин в k -тій копії графа G , то ні одна з суміжних з нею вершин не може належати цій незалежній множині. Зауважимо, що для пошуку ( )K G та відповідних йому незалежних множин може бути використана за- дача (1), (2) та задача (1), (3) для числа незалежності графа K KG G I=  , отриманого як декартів добуток графа G та повного K -вершинного графа ( ( ), ( ))K K KI V I E I= . Має місце Лема 1. ( ) ( )K KG G I =  . Доведення леми 1 за допомогою формулювання задачі (1), (2) наведено в [3]. Доведення за допомогою формулювання задачі (1), (3) можна зробити за аналогічною схемою. Задачі (6) – (8) та (9), (10) можуть бути використані в алгоритмі Візинга-Плесневича для пошуку ( )G – мінімальної кількості кольорів для розфарбування вершин графа G , щоб суміжні вершини були розфарбовані різними кольорами. В основі алгоритму лежить наступна властивість чисел ( )K G та ( )KG . Лема 2. ( ) ( )  ( ) min : ( ) min : ( )k kG k G I G V k G G V  =  = = = . Перша рівність в лемі 2 є наслідком теореми 1 [3], а друга рівність випливає з леми 1. Для пошуку ( )G у графі, для якого ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , алгоритм Візинга-Плесневича на основі леми 2 та методу дихотомії передбачає такі кроки. Ініціалізація. На ітерації 0k = маємо min 1 = та max ( )V G = . Оскільки ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , то хроматичне число ( )G знаходиться всередині інтервалу min max[ ; ]  . Пе- рейдемо до чергової ітерації зі значеннями min та max . Ітеративний процес. Нехай на k -й ітерації знайдені min та max . Для переходу до ( 1)k + -ї ітерації ви- конуємо наступні дії. 1. Якщо max min 1.5 −  , то max( )G = , itn k= і зупиняємося. 2. Обчислимо ( )min max 2K  = +   , де    – найближче ціле число. Знайдемо ( )K G = , вирішуючи задачу (6) – (8) або задачу (9) – (10), або ( )KG = , вирішуючи задачу (1) – (2) або задачу (1) – (3). 3. Якщо ( )V G = , то max = , інакше min = . 4. Переходимо до ( 1)k + -ї ітерації з новими min та max . Наведений алгоритм знаходить хроматичне число графа G не більше ніж за ( )2(log ( ) 1)V G + ітерацій. 4. Задачі управління програмними проектами Задача 1. Нехай 25 фахівців – виконавців портфеля програмних проектів впорядковані згідно з алфавітгним порядком їх прізвищ і занумеровані числами від 1 до 25. У табл. 2 наведено дані про конфлікти між ними в попередніх проектах: номер фахівця (перша колонка), номери фахівців, з якими мав місце конфлікт (друга колонка). Таблиця 2 – Дані щодо конфліктів фахівців для графа 25G Номери фахівців, які конфліктували в попередніх проектах 1 21 10 2,6,16,23,25 19 9,13,17,22,24 2 6,10,11,15,22,23,24 11 2,4,14,15,16,23 20 4,5,12,16,18 3 13,17 12 5,20 21 1,4,8,14 4 5,8,11,14,16,20,21 13 3,7,9,17,19 22 2,6,17,19,24 , алгоритм Візинга-Плесневича на основі леми 2 та методу дихотомії передбачає такі кроки. Ініціалізація. На ітерації [Введите текст] Методи і засоби програмної інженерії [Введите текст] Якщо для графа ( ( ), ( ))G V G E G= у другому операторі описати множину вершин ( )V G , а у третьому – множину ребер ( )E G , то AMPL-код може бути використаний для пошуку ( )K G для того значення параметра "K", який задається у першому операторі. Задача (6) – (8) побудована на основі використання задачі (1), (2) для K копій графа G ( 1K  ). Якщо для цих же копій графа використовувати задачу (1), (3), то задачу для знаходження ( )K G можна записати за допомогою задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (9) за обмежень ( ) ( ) ( )( ) ( ) 1, , , ( 1) ( ) 1 , {1... }, .kj tj i ki j i t K j V G t k x x d K V G x k K i V G  =   +  + − −       (10) Задача (9), (10) містить ( )K V G булевих змінних та ( )K V G обмежень – лінійних нерівностей. Об- меження (10) означають, що якщо вершина буде належати незалежній множині вершин в k -тій копії графа G , то ні одна з суміжних з нею вершин не може належати цій незалежній множині. Зауважимо, що для пошуку ( )K G та відповідних йому незалежних множин може бути використана за- дача (1), (2) та задача (1), (3) для числа незалежності графа K KG G I=  , отриманого як декартів добуток графа G та повного K -вершинного графа ( ( ), ( ))K K KI V I E I= . Має місце Лема 1. ( ) ( )K KG G I =  . Доведення леми 1 за допомогою формулювання задачі (1), (2) наведено в [3]. Доведення за допомогою формулювання задачі (1), (3) можна зробити за аналогічною схемою. Задачі (6) – (8) та (9), (10) можуть бути використані в алгоритмі Візинга-Плесневича для пошуку ( )G – мінімальної кількості кольорів для розфарбування вершин графа G , щоб суміжні вершини були розфарбовані різними кольорами. В основі алгоритму лежить наступна властивість чисел ( )K G та ( )KG . Лема 2. ( ) ( )  ( ) min : ( ) min : ( )k kG k G I G V k G G V  =  = = = . Перша рівність в лемі 2 є наслідком теореми 1 [3], а друга рівність випливає з леми 1. Для пошуку ( )G у графі, для якого ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , алгоритм Візинга-Плесневича на основі леми 2 та методу дихотомії передбачає такі кроки. Ініціалізація. На ітерації 0k = маємо min 1 = та max ( )V G = . Оскільки ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , то хроматичне число ( )G знаходиться всередині інтервалу min max[ ; ]  . Пе- рейдемо до чергової ітерації зі значеннями min та max . Ітеративний процес. Нехай на k -й ітерації знайдені min та max . Для переходу до ( 1)k + -ї ітерації ви- конуємо наступні дії. 1. Якщо max min 1.5 −  , то max( )G = , itn k= і зупиняємося. 2. Обчислимо ( )min max 2K  = +   , де    – найближче ціле число. Знайдемо ( )K G = , вирішуючи задачу (6) – (8) або задачу (9) – (10), або ( )KG = , вирішуючи задачу (1) – (2) або задачу (1) – (3). 3. Якщо ( )V G = , то max = , інакше min = . 4. Переходимо до ( 1)k + -ї ітерації з новими min та max . Наведений алгоритм знаходить хроматичне число графа G не більше ніж за ( )2(log ( ) 1)V G + ітерацій. 4. Задачі управління програмними проектами Задача 1. Нехай 25 фахівців – виконавців портфеля програмних проектів впорядковані згідно з алфавітгним порядком їх прізвищ і занумеровані числами від 1 до 25. У табл. 2 наведено дані про конфлікти між ними в попередніх проектах: номер фахівця (перша колонка), номери фахівців, з якими мав місце конфлікт (друга колонка). Таблиця 2 – Дані щодо конфліктів фахівців для графа 25G Номери фахівців, які конфліктували в попередніх проектах 1 21 10 2,6,16,23,25 19 9,13,17,22,24 2 6,10,11,15,22,23,24 11 2,4,14,15,16,23 20 4,5,12,16,18 3 13,17 12 5,20 21 1,4,8,14 4 5,8,11,14,16,20,21 13 3,7,9,17,19 22 2,6,17,19,24 маємо [Введите текст] Методи і засоби програмної інженерії [Введите текст] Якщо для графа ( ( ), ( ))G V G E G= у другому операторі описати множину вершин ( )V G , а у третьому – множину ребер ( )E G , то AMPL-код може бути використаний для пошуку ( )K G для того значення параметра "K", який задається у першому операторі. Задача (6) – (8) побудована на основі використання задачі (1), (2) для K копій графа G ( 1K  ). Якщо для цих же копій графа використовувати задачу (1), (3), то задачу для знаходження ( )K G можна записати за допомогою задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (9) за обмежень ( ) ( ) ( )( ) ( ) 1, , , ( 1) ( ) 1 , {1... }, .kj tj i ki j i t K j V G t k x x d K V G x k K i V G  =   +  + − −       (10) Задача (9), (10) містить ( )K V G булевих змінних та ( )K V G обмежень – лінійних нерівностей. Об- меження (10) означають, що якщо вершина буде належати незалежній множині вершин в k -тій копії графа G , то ні одна з суміжних з нею вершин не може належати цій незалежній множині. Зауважимо, що для пошуку ( )K G та відповідних йому незалежних множин може бути використана за- дача (1), (2) та задача (1), (3) для числа незалежності графа K KG G I=  , отриманого як декартів добуток графа G та повного K -вершинного графа ( ( ), ( ))K K KI V I E I= . Має місце Лема 1. ( ) ( )K KG G I =  . Доведення леми 1 за допомогою формулювання задачі (1), (2) наведено в [3]. Доведення за допомогою формулювання задачі (1), (3) можна зробити за аналогічною схемою. Задачі (6) – (8) та (9), (10) можуть бути використані в алгоритмі Візинга-Плесневича для пошуку ( )G – мінімальної кількості кольорів для розфарбування вершин графа G , щоб суміжні вершини були розфарбовані різними кольорами. В основі алгоритму лежить наступна властивість чисел ( )K G та ( )KG . Лема 2. ( ) ( )  ( ) min : ( ) min : ( )k kG k G I G V k G G V  =  = = = . Перша рівність в лемі 2 є наслідком теореми 1 [3], а друга рівність випливає з леми 1. Для пошуку ( )G у графі, для якого ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , алгоритм Візинга-Плесневича на основі леми 2 та методу дихотомії передбачає такі кроки. Ініціалізація. На ітерації 0k = маємо min 1 = та max ( )V G = . Оскільки ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , то хроматичне число ( )G знаходиться всередині інтервалу min max[ ; ]  . Пе- рейдемо до чергової ітерації зі значеннями min та max . Ітеративний процес. Нехай на k -й ітерації знайдені min та max . Для переходу до ( 1)k + -ї ітерації ви- конуємо наступні дії. 1. Якщо max min 1.5 −  , то max( )G = , itn k= і зупиняємося. 2. Обчислимо ( )min max 2K  = +   , де    – найближче ціле число. Знайдемо ( )K G = , вирішуючи задачу (6) – (8) або задачу (9) – (10), або ( )KG = , вирішуючи задачу (1) – (2) або задачу (1) – (3). 3. Якщо ( )V G = , то max = , інакше min = . 4. Переходимо до ( 1)k + -ї ітерації з новими min та max . Наведений алгоритм знаходить хроматичне число графа G не більше ніж за ( )2(log ( ) 1)V G + ітерацій. 4. Задачі управління програмними проектами Задача 1. Нехай 25 фахівців – виконавців портфеля програмних проектів впорядковані згідно з алфавітгним порядком їх прізвищ і занумеровані числами від 1 до 25. У табл. 2 наведено дані про конфлікти між ними в попередніх проектах: номер фахівця (перша колонка), номери фахівців, з якими мав місце конфлікт (друга колонка). Таблиця 2 – Дані щодо конфліктів фахівців для графа 25G Номери фахівців, які конфліктували в попередніх проектах 1 21 10 2,6,16,23,25 19 9,13,17,22,24 2 6,10,11,15,22,23,24 11 2,4,14,15,16,23 20 4,5,12,16,18 3 13,17 12 5,20 21 1,4,8,14 4 5,8,11,14,16,20,21 13 3,7,9,17,19 22 2,6,17,19,24 та [Введите текст] Методи і засоби програмної інженерії [Введите текст] Якщо для графа ( ( ), ( ))G V G E G= у другому операторі описати множину вершин ( )V G , а у третьому – множину ребер ( )E G , то AMPL-код може бути використаний для пошуку ( )K G для того значення параметра "K", який задається у першому операторі. Задача (6) – (8) побудована на основі використання задачі (1), (2) для K копій графа G ( 1K  ). Якщо для цих же копій графа використовувати задачу (1), (3), то задачу для знаходження ( )K G можна записати за допомогою задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (9) за обмежень ( ) ( ) ( )( ) ( ) 1, , , ( 1) ( ) 1 , {1... }, .kj tj i ki j i t K j V G t k x x d K V G x k K i V G  =   +  + − −       (10) Задача (9), (10) містить ( )K V G булевих змінних та ( )K V G обмежень – лінійних нерівностей. Об- меження (10) означають, що якщо вершина буде належати незалежній множині вершин в k -тій копії графа G , то ні одна з суміжних з нею вершин не може належати цій незалежній множині. Зауважимо, що для пошуку ( )K G та відповідних йому незалежних множин може бути використана за- дача (1), (2) та задача (1), (3) для числа незалежності графа K KG G I=  , отриманого як декартів добуток графа G та повного K -вершинного графа ( ( ), ( ))K K KI V I E I= . Має місце Лема 1. ( ) ( )K KG G I =  . Доведення леми 1 за допомогою формулювання задачі (1), (2) наведено в [3]. Доведення за допомогою формулювання задачі (1), (3) можна зробити за аналогічною схемою. Задачі (6) – (8) та (9), (10) можуть бути використані в алгоритмі Візинга-Плесневича для пошуку ( )G – мінімальної кількості кольорів для розфарбування вершин графа G , щоб суміжні вершини були розфарбовані різними кольорами. В основі алгоритму лежить наступна властивість чисел ( )K G та ( )KG . Лема 2. ( ) ( )  ( ) min : ( ) min : ( )k kG k G I G V k G G V  =  = = = . Перша рівність в лемі 2 є наслідком теореми 1 [3], а друга рівність випливає з леми 1. Для пошуку ( )G у графі, для якого ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , алгоритм Візинга-Плесневича на основі леми 2 та методу дихотомії передбачає такі кроки. Ініціалізація. На ітерації 0k = маємо min 1 = та max ( )V G = . Оскільки ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , то хроматичне число ( )G знаходиться всередині інтервалу min max[ ; ]  . Пе- рейдемо до чергової ітерації зі значеннями min та max . Ітеративний процес. Нехай на k -й ітерації знайдені min та max . Для переходу до ( 1)k + -ї ітерації ви- конуємо наступні дії. 1. Якщо max min 1.5 −  , то max( )G = , itn k= і зупиняємося. 2. Обчислимо ( )min max 2K  = +   , де    – найближче ціле число. Знайдемо ( )K G = , вирішуючи задачу (6) – (8) або задачу (9) – (10), або ( )KG = , вирішуючи задачу (1) – (2) або задачу (1) – (3). 3. Якщо ( )V G = , то max = , інакше min = . 4. Переходимо до ( 1)k + -ї ітерації з новими min та max . Наведений алгоритм знаходить хроматичне число графа G не більше ніж за ( )2(log ( ) 1)V G + ітерацій. 4. Задачі управління програмними проектами Задача 1. Нехай 25 фахівців – виконавців портфеля програмних проектів впорядковані згідно з алфавітгним порядком їх прізвищ і занумеровані числами від 1 до 25. У табл. 2 наведено дані про конфлікти між ними в попередніх проектах: номер фахівця (перша колонка), номери фахівців, з якими мав місце конфлікт (друга колонка). Таблиця 2 – Дані щодо конфліктів фахівців для графа 25G Номери фахівців, які конфліктували в попередніх проектах 1 21 10 2,6,16,23,25 19 9,13,17,22,24 2 6,10,11,15,22,23,24 11 2,4,14,15,16,23 20 4,5,12,16,18 3 13,17 12 5,20 21 1,4,8,14 4 5,8,11,14,16,20,21 13 3,7,9,17,19 22 2,6,17,19,24 . Оскільки [Введите текст] Методи і засоби програмної інженерії [Введите текст] Якщо для графа ( ( ), ( ))G V G E G= у другому операторі описати множину вершин ( )V G , а у третьому – множину ребер ( )E G , то AMPL-код може бути використаний для пошуку ( )K G для того значення параметра "K", який задається у першому операторі. Задача (6) – (8) побудована на основі використання задачі (1), (2) для K копій графа G ( 1K  ). Якщо для цих же копій графа використовувати задачу (1), (3), то задачу для знаходження ( )K G можна записати за допомогою задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (9) за обмежень ( ) ( ) ( )( ) ( ) 1, , , ( 1) ( ) 1 , {1... }, .kj tj i ki j i t K j V G t k x x d K V G x k K i V G  =   +  + − −       (10) Задача (9), (10) містить ( )K V G булевих змінних та ( )K V G обмежень – лінійних нерівностей. Об- меження (10) означають, що якщо вершина буде належати незалежній множині вершин в k -тій копії графа G , то ні одна з суміжних з нею вершин не може належати цій незалежній множині. Зауважимо, що для пошуку ( )K G та відповідних йому незалежних множин може бути використана за- дача (1), (2) та задача (1), (3) для числа незалежності графа K KG G I=  , отриманого як декартів добуток графа G та повного K -вершинного графа ( ( ), ( ))K K KI V I E I= . Має місце Лема 1. ( ) ( )K KG G I =  . Доведення леми 1 за допомогою формулювання задачі (1), (2) наведено в [3]. Доведення за допомогою формулювання задачі (1), (3) можна зробити за аналогічною схемою. Задачі (6) – (8) та (9), (10) можуть бути використані в алгоритмі Візинга-Плесневича для пошуку ( )G – мінімальної кількості кольорів для розфарбування вершин графа G , щоб суміжні вершини були розфарбовані різними кольорами. В основі алгоритму лежить наступна властивість чисел ( )K G та ( )KG . Лема 2. ( ) ( )  ( ) min : ( ) min : ( )k kG k G I G V k G G V  =  = = = . Перша рівність в лемі 2 є наслідком теореми 1 [3], а друга рівність випливає з леми 1. Для пошуку ( )G у графі, для якого ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , алгоритм Візинга-Плесневича на основі леми 2 та методу дихотомії передбачає такі кроки. Ініціалізація. На ітерації 0k = маємо min 1 = та max ( )V G = . Оскільки ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , то хроматичне число ( )G знаходиться всередині інтервалу min max[ ; ]  . Пе- рейдемо до чергової ітерації зі значеннями min та max . Ітеративний процес. Нехай на k -й ітерації знайдені min та max . Для переходу до ( 1)k + -ї ітерації ви- конуємо наступні дії. 1. Якщо max min 1.5 −  , то max( )G = , itn k= і зупиняємося. 2. Обчислимо ( )min max 2K  = +   , де    – найближче ціле число. Знайдемо ( )K G = , вирішуючи задачу (6) – (8) або задачу (9) – (10), або ( )KG = , вирішуючи задачу (1) – (2) або задачу (1) – (3). 3. Якщо ( )V G = , то max = , інакше min = . 4. Переходимо до ( 1)k + -ї ітерації з новими min та max . Наведений алгоритм знаходить хроматичне число графа G не більше ніж за ( )2(log ( ) 1)V G + ітерацій. 4. Задачі управління програмними проектами Задача 1. Нехай 25 фахівців – виконавців портфеля програмних проектів впорядковані згідно з алфавітгним порядком їх прізвищ і занумеровані числами від 1 до 25. У табл. 2 наведено дані про конфлікти між ними в попередніх проектах: номер фахівця (перша колонка), номери фахівців, з якими мав місце конфлікт (друга колонка). Таблиця 2 – Дані щодо конфліктів фахівців для графа 25G Номери фахівців, які конфліктували в попередніх проектах 1 21 10 2,6,16,23,25 19 9,13,17,22,24 2 6,10,11,15,22,23,24 11 2,4,14,15,16,23 20 4,5,12,16,18 3 13,17 12 5,20 21 1,4,8,14 4 5,8,11,14,16,20,21 13 3,7,9,17,19 22 2,6,17,19,24 , то хроматичне число [Введите текст] Методи і засоби програмної інженерії [Введите текст] Якщо для графа ( ( ), ( ))G V G E G= у другому операторі описати множину вершин ( )V G , а у третьому – множину ребер ( )E G , то AMPL-код може бути використаний для пошуку ( )K G для того значення параметра "K", який задається у першому операторі. Задача (6) – (8) побудована на основі використання задачі (1), (2) для K копій графа G ( 1K  ). Якщо для цих же копій графа використовувати задачу (1), (3), то задачу для знаходження ( )K G можна записати за допомогою задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (9) за обмежень ( ) ( ) ( )( ) ( ) 1, , , ( 1) ( ) 1 , {1... }, .kj tj i ki j i t K j V G t k x x d K V G x k K i V G  =   +  + − −       (10) Задача (9), (10) містить ( )K V G булевих змінних та ( )K V G обмежень – лінійних нерівностей. Об- меження (10) означають, що якщо вершина буде належати незалежній множині вершин в k -тій копії графа G , то ні одна з суміжних з нею вершин не може належати цій незалежній множині. Зауважимо, що для пошуку ( )K G та відповідних йому незалежних множин може бути використана за- дача (1), (2) та задача (1), (3) для числа незалежності графа K KG G I=  , отриманого як декартів добуток графа G та повного K -вершинного графа ( ( ), ( ))K K KI V I E I= . Має місце Лема 1. ( ) ( )K KG G I =  . Доведення леми 1 за допомогою формулювання задачі (1), (2) наведено в [3]. Доведення за допомогою формулювання задачі (1), (3) можна зробити за аналогічною схемою. Задачі (6) – (8) та (9), (10) можуть бути використані в алгоритмі Візинга-Плесневича для пошуку ( )G – мінімальної кількості кольорів для розфарбування вершин графа G , щоб суміжні вершини були розфарбовані різними кольорами. В основі алгоритму лежить наступна властивість чисел ( )K G та ( )KG . Лема 2. ( ) ( )  ( ) min : ( ) min : ( )k kG k G I G V k G G V  =  = = = . Перша рівність в лемі 2 є наслідком теореми 1 [3], а друга рівність випливає з леми 1. Для пошуку ( )G у графі, для якого ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , алгоритм Візинга-Плесневича на основі леми 2 та методу дихотомії передбачає такі кроки. Ініціалізація. На ітерації 0k = маємо min 1 = та max ( )V G = . Оскільки ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , то хроматичне число ( )G знаходиться всередині інтервалу min max[ ; ]  . Пе- рейдемо до чергової ітерації зі значеннями min та max . Ітеративний процес. Нехай на k -й ітерації знайдені min та max . Для переходу до ( 1)k + -ї ітерації ви- конуємо наступні дії. 1. Якщо max min 1.5 −  , то max( )G = , itn k= і зупиняємося. 2. Обчислимо ( )min max 2K  = +   , де    – найближче ціле число. Знайдемо ( )K G = , вирішуючи задачу (6) – (8) або задачу (9) – (10), або ( )KG = , вирішуючи задачу (1) – (2) або задачу (1) – (3). 3. Якщо ( )V G = , то max = , інакше min = . 4. Переходимо до ( 1)k + -ї ітерації з новими min та max . Наведений алгоритм знаходить хроматичне число графа G не більше ніж за ( )2(log ( ) 1)V G + ітерацій. 4. Задачі управління програмними проектами Задача 1. Нехай 25 фахівців – виконавців портфеля програмних проектів впорядковані згідно з алфавітгним порядком їх прізвищ і занумеровані числами від 1 до 25. У табл. 2 наведено дані про конфлікти між ними в попередніх проектах: номер фахівця (перша колонка), номери фахівців, з якими мав місце конфлікт (друга колонка). Таблиця 2 – Дані щодо конфліктів фахівців для графа 25G Номери фахівців, які конфліктували в попередніх проектах 1 21 10 2,6,16,23,25 19 9,13,17,22,24 2 6,10,11,15,22,23,24 11 2,4,14,15,16,23 20 4,5,12,16,18 3 13,17 12 5,20 21 1,4,8,14 4 5,8,11,14,16,20,21 13 3,7,9,17,19 22 2,6,17,19,24 знаходиться всередині інтервалу [Введите текст] Методи і засоби програмної інженерії [Введите текст] Якщо для графа ( ( ), ( ))G V G E G= у другому операторі описати множину вершин ( )V G , а у третьому – множину ребер ( )E G , то AMPL-код може бути використаний для пошуку ( )K G для того значення параметра "K", який задається у першому операторі. Задача (6) – (8) побудована на основі використання задачі (1), (2) для K копій графа G ( 1K  ). Якщо для цих же копій графа використовувати задачу (1), (3), то задачу для знаходження ( )K G можна записати за допомогою задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (9) за обмежень ( ) ( ) ( )( ) ( ) 1, , , ( 1) ( ) 1 , {1... }, .kj tj i ki j i t K j V G t k x x d K V G x k K i V G  =   +  + − −       (10) Задача (9), (10) містить ( )K V G булевих змінних та ( )K V G обмежень – лінійних нерівностей. Об- меження (10) означають, що якщо вершина буде належати незалежній множині вершин в k -тій копії графа G , то ні одна з суміжних з нею вершин не може належати цій незалежній множині. Зауважимо, що для пошуку ( )K G та відповідних йому незалежних множин може бути використана за- дача (1), (2) та задача (1), (3) для числа незалежності графа K KG G I=  , отриманого як декартів добуток графа G та повного K -вершинного графа ( ( ), ( ))K K KI V I E I= . Має місце Лема 1. ( ) ( )K KG G I =  . Доведення леми 1 за допомогою формулювання задачі (1), (2) наведено в [3]. Доведення за допомогою формулювання задачі (1), (3) можна зробити за аналогічною схемою. Задачі (6) – (8) та (9), (10) можуть бути використані в алгоритмі Візинга-Плесневича для пошуку ( )G – мінімальної кількості кольорів для розфарбування вершин графа G , щоб суміжні вершини були розфарбовані різними кольорами. В основі алгоритму лежить наступна властивість чисел ( )K G та ( )KG . Лема 2. ( ) ( )  ( ) min : ( ) min : ( )k kG k G I G V k G G V  =  = = = . Перша рівність в лемі 2 є наслідком теореми 1 [3], а друга рівність випливає з леми 1. Для пошуку ( )G у графі, для якого ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , алгоритм Візинга-Плесневича на основі леми 2 та методу дихотомії передбачає такі кроки. Ініціалізація. На ітерації 0k = маємо min 1 = та max ( )V G = . Оскільки ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , то хроматичне число ( )G знаходиться всередині інтервалу min max[ ; ]  . Пе- рейдемо до чергової ітерації зі значеннями min та max . Ітеративний процес. Нехай на k -й ітерації знайдені min та max . Для переходу до ( 1)k + -ї ітерації ви- конуємо наступні дії. 1. Якщо max min 1.5 −  , то max( )G = , itn k= і зупиняємося. 2. Обчислимо ( )min max 2K  = +   , де    – найближче ціле число. Знайдемо ( )K G = , вирішуючи задачу (6) – (8) або задачу (9) – (10), або ( )KG = , вирішуючи задачу (1) – (2) або задачу (1) – (3). 3. Якщо ( )V G = , то max = , інакше min = . 4. Переходимо до ( 1)k + -ї ітерації з новими min та max . Наведений алгоритм знаходить хроматичне число графа G не більше ніж за ( )2(log ( ) 1)V G + ітерацій. 4. Задачі управління програмними проектами Задача 1. Нехай 25 фахівців – виконавців портфеля програмних проектів впорядковані згідно з алфавітгним порядком їх прізвищ і занумеровані числами від 1 до 25. У табл. 2 наведено дані про конфлікти між ними в попередніх проектах: номер фахівця (перша колонка), номери фахівців, з якими мав місце конфлікт (друга колонка). Таблиця 2 – Дані щодо конфліктів фахівців для графа 25G Номери фахівців, які конфліктували в попередніх проектах 1 21 10 2,6,16,23,25 19 9,13,17,22,24 2 6,10,11,15,22,23,24 11 2,4,14,15,16,23 20 4,5,12,16,18 3 13,17 12 5,20 21 1,4,8,14 4 5,8,11,14,16,20,21 13 3,7,9,17,19 22 2,6,17,19,24 . Перейдемо до чергової ітерації зі значеннями [Введите текст] Методи і засоби програмної інженерії [Введите текст] Якщо для графа ( ( ), ( ))G V G E G= у другому операторі описати множину вершин ( )V G , а у третьому – множину ребер ( )E G , то AMPL-код може бути використаний для пошуку ( )K G для того значення параметра "K", який задається у першому операторі. Задача (6) – (8) побудована на основі використання задачі (1), (2) для K копій графа G ( 1K  ). Якщо для цих же копій графа використовувати задачу (1), (3), то задачу для знаходження ( )K G можна записати за допомогою задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (9) за обмежень ( ) ( ) ( )( ) ( ) 1, , , ( 1) ( ) 1 , {1... }, .kj tj i ki j i t K j V G t k x x d K V G x k K i V G  =   +  + − −       (10) Задача (9), (10) містить ( )K V G булевих змінних та ( )K V G обмежень – лінійних нерівностей. Об- меження (10) означають, що якщо вершина буде належати незалежній множині вершин в k -тій копії графа G , то ні одна з суміжних з нею вершин не може належати цій незалежній множині. Зауважимо, що для пошуку ( )K G та відповідних йому незалежних множин може бути використана за- дача (1), (2) та задача (1), (3) для числа незалежності графа K KG G I=  , отриманого як декартів добуток графа G та повного K -вершинного графа ( ( ), ( ))K K KI V I E I= . Має місце Лема 1. ( ) ( )K KG G I =  . Доведення леми 1 за допомогою формулювання задачі (1), (2) наведено в [3]. Доведення за допомогою формулювання задачі (1), (3) можна зробити за аналогічною схемою. Задачі (6) – (8) та (9), (10) можуть бути використані в алгоритмі Візинга-Плесневича для пошуку ( )G – мінімальної кількості кольорів для розфарбування вершин графа G , щоб суміжні вершини були розфарбовані різними кольорами. В основі алгоритму лежить наступна властивість чисел ( )K G та ( )KG . Лема 2. ( ) ( )  ( ) min : ( ) min : ( )k kG k G I G V k G G V  =  = = = . Перша рівність в лемі 2 є наслідком теореми 1 [3], а друга рівність випливає з леми 1. Для пошуку ( )G у графі, для якого ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , алгоритм Візинга-Плесневича на основі леми 2 та методу дихотомії передбачає такі кроки. Ініціалізація. На ітерації 0k = маємо min 1 = та max ( )V G = . Оскільки ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , то хроматичне число ( )G знаходиться всередині інтервалу min max[ ; ]  . Пе- рейдемо до чергової ітерації зі значеннями min та max . Ітеративний процес. Нехай на k -й ітерації знайдені min та max . Для переходу до ( 1)k + -ї ітерації ви- конуємо наступні дії. 1. Якщо max min 1.5 −  , то max( )G = , itn k= і зупиняємося. 2. Обчислимо ( )min max 2K  = +   , де    – найближче ціле число. Знайдемо ( )K G = , вирішуючи задачу (6) – (8) або задачу (9) – (10), або ( )KG = , вирішуючи задачу (1) – (2) або задачу (1) – (3). 3. Якщо ( )V G = , то max = , інакше min = . 4. Переходимо до ( 1)k + -ї ітерації з новими min та max . Наведений алгоритм знаходить хроматичне число графа G не більше ніж за ( )2(log ( ) 1)V G + ітерацій. 4. Задачі управління програмними проектами Задача 1. Нехай 25 фахівців – виконавців портфеля програмних проектів впорядковані згідно з алфавітгним порядком їх прізвищ і занумеровані числами від 1 до 25. У табл. 2 наведено дані про конфлікти між ними в попередніх проектах: номер фахівця (перша колонка), номери фахівців, з якими мав місце конфлікт (друга колонка). Таблиця 2 – Дані щодо конфліктів фахівців для графа 25G Номери фахівців, які конфліктували в попередніх проектах 1 21 10 2,6,16,23,25 19 9,13,17,22,24 2 6,10,11,15,22,23,24 11 2,4,14,15,16,23 20 4,5,12,16,18 3 13,17 12 5,20 21 1,4,8,14 4 5,8,11,14,16,20,21 13 3,7,9,17,19 22 2,6,17,19,24 . Ітеративний процес. Нехай на k-й ітерації знайдені [Введите текст] Методи і засоби програмної інженерії [Введите текст] Якщо для графа ( ( ), ( ))G V G E G= у другому операторі описати множину вершин ( )V G , а у третьому – множину ребер ( )E G , то AMPL-код може бути використаний для пошуку ( )K G для того значення параметра "K", який задається у першому операторі. Задача (6) – (8) побудована на основі використання задачі (1), (2) для K копій графа G ( 1K  ). Якщо для цих же копій графа використовувати задачу (1), (3), то задачу для знаходження ( )K G можна записати за допомогою задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (9) за обмежень ( ) ( ) ( )( ) ( ) 1, , , ( 1) ( ) 1 , {1... }, .kj tj i ki j i t K j V G t k x x d K V G x k K i V G  =   +  + − −       (10) Задача (9), (10) містить ( )K V G булевих змінних та ( )K V G обмежень – лінійних нерівностей. Об- меження (10) означають, що якщо вершина буде належати незалежній множині вершин в k -тій копії графа G , то ні одна з суміжних з нею вершин не може належати цій незалежній множині. Зауважимо, що для пошуку ( )K G та відповідних йому незалежних множин може бути використана за- дача (1), (2) та задача (1), (3) для числа незалежності графа K KG G I=  , отриманого як декартів добуток графа G та повного K -вершинного графа ( ( ), ( ))K K KI V I E I= . Має місце Лема 1. ( ) ( )K KG G I =  . Доведення леми 1 за допомогою формулювання задачі (1), (2) наведено в [3]. Доведення за допомогою формулювання задачі (1), (3) можна зробити за аналогічною схемою. Задачі (6) – (8) та (9), (10) можуть бути використані в алгоритмі Візинга-Плесневича для пошуку ( )G – мінімальної кількості кольорів для розфарбування вершин графа G , щоб суміжні вершини були розфарбовані різними кольорами. В основі алгоритму лежить наступна властивість чисел ( )K G та ( )KG . Лема 2. ( ) ( )  ( ) min : ( ) min : ( )k kG k G I G V k G G V  =  = = = . Перша рівність в лемі 2 є наслідком теореми 1 [3], а друга рівність випливає з леми 1. Для пошуку ( )G у графі, для якого ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , алгоритм Візинга-Плесневича на основі леми 2 та методу дихотомії передбачає такі кроки. Ініціалізація. На ітерації 0k = маємо min 1 = та max ( )V G = . Оскільки ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , то хроматичне число ( )G знаходиться всередині інтервалу min max[ ; ]  . Пе- рейдемо до чергової ітерації зі значеннями min та max . Ітеративний процес. Нехай на k -й ітерації знайдені min та max . Для переходу до ( 1)k + -ї ітерації ви- конуємо наступні дії. 1. Якщо max min 1.5 −  , то max( )G = , itn k= і зупиняємося. 2. Обчислимо ( )min max 2K  = +   , де    – найближче ціле число. Знайдемо ( )K G = , вирішуючи задачу (6) – (8) або задачу (9) – (10), або ( )KG = , вирішуючи задачу (1) – (2) або задачу (1) – (3). 3. Якщо ( )V G = , то max = , інакше min = . 4. Переходимо до ( 1)k + -ї ітерації з новими min та max . Наведений алгоритм знаходить хроматичне число графа G не більше ніж за ( )2(log ( ) 1)V G + ітерацій. 4. Задачі управління програмними проектами Задача 1. Нехай 25 фахівців – виконавців портфеля програмних проектів впорядковані згідно з алфавітгним порядком їх прізвищ і занумеровані числами від 1 до 25. У табл. 2 наведено дані про конфлікти між ними в попередніх проектах: номер фахівця (перша колонка), номери фахівців, з якими мав місце конфлікт (друга колонка). Таблиця 2 – Дані щодо конфліктів фахівців для графа 25G Номери фахівців, які конфліктували в попередніх проектах 1 21 10 2,6,16,23,25 19 9,13,17,22,24 2 6,10,11,15,22,23,24 11 2,4,14,15,16,23 20 4,5,12,16,18 3 13,17 12 5,20 21 1,4,8,14 4 5,8,11,14,16,20,21 13 3,7,9,17,19 22 2,6,17,19,24 . Для переходу до (k + 1)-ї ітерації виконуємо наступні дії. 1. Якщо [Введите текст] Методи і засоби програмної інженерії [Введите текст] Якщо для графа ( ( ), ( ))G V G E G= у другому операторі описати множину вершин ( )V G , а у третьому – множину ребер ( )E G , то AMPL-код може бути використаний для пошуку ( )K G для того значення параметра "K", який задається у першому операторі. Задача (6) – (8) побудована на основі використання задачі (1), (2) для K копій графа G ( 1K  ). Якщо для цих же копій графа використовувати задачу (1), (3), то задачу для знаходження ( )K G можна записати за допомогою задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (9) за обмежень ( ) ( ) ( )( ) ( ) 1, , , ( 1) ( ) 1 , {1... }, .kj tj i ki j i t K j V G t k x x d K V G x k K i V G  =   +  + − −       (10) Задача (9), (10) містить ( )K V G булевих змінних та ( )K V G обмежень – лінійних нерівностей. Об- меження (10) означають, що якщо вершина буде належати незалежній множині вершин в k -тій копії графа G , то ні одна з суміжних з нею вершин не може належати цій незалежній множині. Зауважимо, що для пошуку ( )K G та відповідних йому незалежних множин може бути використана за- дача (1), (2) та задача (1), (3) для числа незалежності графа K KG G I=  , отриманого як декартів добуток графа G та повного K -вершинного графа ( ( ), ( ))K K KI V I E I= . Має місце Лема 1. ( ) ( )K KG G I =  . Доведення леми 1 за допомогою формулювання задачі (1), (2) наведено в [3]. Доведення за допомогою формулювання задачі (1), (3) можна зробити за аналогічною схемою. Задачі (6) – (8) та (9), (10) можуть бути використані в алгоритмі Візинга-Плесневича для пошуку ( )G – мінімальної кількості кольорів для розфарбування вершин графа G , щоб суміжні вершини були розфарбовані різними кольорами. В основі алгоритму лежить наступна властивість чисел ( )K G та ( )KG . Лема 2. ( ) ( )  ( ) min : ( ) min : ( )k kG k G I G V k G G V  =  = = = . Перша рівність в лемі 2 є наслідком теореми 1 [3], а друга рівність випливає з леми 1. Для пошуку ( )G у графі, для якого ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , алгоритм Візинга-Плесневича на основі леми 2 та методу дихотомії передбачає такі кроки. Ініціалізація. На ітерації 0k = маємо min 1 = та max ( )V G = . Оскільки ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , то хроматичне число ( )G знаходиться всередині інтервалу min max[ ; ]  . Пе- рейдемо до чергової ітерації зі значеннями min та max . Ітеративний процес. Нехай на k -й ітерації знайдені min та max . Для переходу до ( 1)k + -ї ітерації ви- конуємо наступні дії. 1. Якщо max min 1.5 −  , то max( )G = , itn k= і зупиняємося. 2. Обчислимо ( )min max 2K  = +   , де    – найближче ціле число. Знайдемо ( )K G = , вирішуючи задачу (6) – (8) або задачу (9) – (10), або ( )KG = , вирішуючи задачу (1) – (2) або задачу (1) – (3). 3. Якщо ( )V G = , то max = , інакше min = . 4. Переходимо до ( 1)k + -ї ітерації з новими min та max . Наведений алгоритм знаходить хроматичне число графа G не більше ніж за ( )2(log ( ) 1)V G + ітерацій. 4. Задачі управління програмними проектами Задача 1. Нехай 25 фахівців – виконавців портфеля програмних проектів впорядковані згідно з алфавітгним порядком їх прізвищ і занумеровані числами від 1 до 25. У табл. 2 наведено дані про конфлікти між ними в попередніх проектах: номер фахівця (перша колонка), номери фахівців, з якими мав місце конфлікт (друга колонка). Таблиця 2 – Дані щодо конфліктів фахівців для графа 25G Номери фахівців, які конфліктували в попередніх проектах 1 21 10 2,6,16,23,25 19 9,13,17,22,24 2 6,10,11,15,22,23,24 11 2,4,14,15,16,23 20 4,5,12,16,18 3 13,17 12 5,20 21 1,4,8,14 4 5,8,11,14,16,20,21 13 3,7,9,17,19 22 2,6,17,19,24 . 2. Обчислимо [Введите текст] Методи і засоби програмної інженерії [Введите текст] Якщо для графа ( ( ), ( ))G V G E G= у другому операторі описати множину вершин ( )V G , а у третьому – множину ребер ( )E G , то AMPL-код може бути використаний для пошуку ( )K G для того значення параметра "K", який задається у першому операторі. Задача (6) – (8) побудована на основі використання задачі (1), (2) для K копій графа G ( 1K  ). Якщо для цих же копій графа використовувати задачу (1), (3), то задачу для знаходження ( )K G можна записати за допомогою задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (9) за обмежень ( ) ( ) ( )( ) ( ) 1, , , ( 1) ( ) 1 , {1... }, .kj tj i ki j i t K j V G t k x x d K V G x k K i V G  =   +  + − −       (10) Задача (9), (10) містить ( )K V G булевих змінних та ( )K V G обмежень – лінійних нерівностей. Об- меження (10) означають, що якщо вершина буде належати незалежній множині вершин в k -тій копії графа G , то ні одна з суміжних з нею вершин не може належати цій незалежній множині. Зауважимо, що для пошуку ( )K G та відповідних йому незалежних множин може бути використана за- дача (1), (2) та задача (1), (3) для числа незалежності графа K KG G I=  , отриманого як декартів добуток графа G та повного K -вершинного графа ( ( ), ( ))K K KI V I E I= . Має місце Лема 1. ( ) ( )K KG G I =  . Доведення леми 1 за допомогою формулювання задачі (1), (2) наведено в [3]. Доведення за допомогою формулювання задачі (1), (3) можна зробити за аналогічною схемою. Задачі (6) – (8) та (9), (10) можуть бути використані в алгоритмі Візинга-Плесневича для пошуку ( )G – мінімальної кількості кольорів для розфарбування вершин графа G , щоб суміжні вершини були розфарбовані різними кольорами. В основі алгоритму лежить наступна властивість чисел ( )K G та ( )KG . Лема 2. ( ) ( )  ( ) min : ( ) min : ( )k kG k G I G V k G G V  =  = = = . Перша рівність в лемі 2 є наслідком теореми 1 [3], а друга рівність випливає з леми 1. Для пошуку ( )G у графі, для якого ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , алгоритм Візинга-Плесневича на основі леми 2 та методу дихотомії передбачає такі кроки. Ініціалізація. На ітерації 0k = маємо min 1 = та max ( )V G = . Оскільки ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , то хроматичне число ( )G знаходиться всередині інтервалу min max[ ; ]  . Пе- рейдемо до чергової ітерації зі значеннями min та max . Ітеративний процес. Нехай на k -й ітерації знайдені min та max . Для переходу до ( 1)k + -ї ітерації ви- конуємо наступні дії. 1. Якщо max min 1.5 −  , то max( )G = , itn k= і зупиняємося. 2. Обчислимо ( )min max 2K  = +   , де    – найближче ціле число. Знайдемо ( )K G = , вирішуючи задачу (6) – (8) або задачу (9) – (10), або ( )KG = , вирішуючи задачу (1) – (2) або задачу (1) – (3). 3. Якщо ( )V G = , то max = , інакше min = . 4. Переходимо до ( 1)k + -ї ітерації з новими min та max . Наведений алгоритм знаходить хроматичне число графа G не більше ніж за ( )2(log ( ) 1)V G + ітерацій. 4. Задачі управління програмними проектами Задача 1. Нехай 25 фахівців – виконавців портфеля програмних проектів впорядковані згідно з алфавітгним порядком їх прізвищ і занумеровані числами від 1 до 25. У табл. 2 наведено дані про конфлікти між ними в попередніх проектах: номер фахівця (перша колонка), номери фахівців, з якими мав місце конфлікт (друга колонка). Таблиця 2 – Дані щодо конфліктів фахівців для графа 25G Номери фахівців, які конфліктували в попередніх проектах 1 21 10 2,6,16,23,25 19 9,13,17,22,24 2 6,10,11,15,22,23,24 11 2,4,14,15,16,23 20 4,5,12,16,18 3 13,17 12 5,20 21 1,4,8,14 4 5,8,11,14,16,20,21 13 3,7,9,17,19 22 2,6,17,19,24 – найближче ціле число. Знайдемо [Введите текст] Методи і засоби програмної інженерії [Введите текст] Якщо для графа ( ( ), ( ))G V G E G= у другому операторі описати множину вершин ( )V G , а у третьому – множину ребер ( )E G , то AMPL-код може бути використаний для пошуку ( )K G для того значення параметра "K", який задається у першому операторі. Задача (6) – (8) побудована на основі використання задачі (1), (2) для K копій графа G ( 1K  ). Якщо для цих же копій графа використовувати задачу (1), (3), то задачу для знаходження ( )K G можна записати за допомогою задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (9) за обмежень ( ) ( ) ( )( ) ( ) 1, , , ( 1) ( ) 1 , {1... }, .kj tj i ki j i t K j V G t k x x d K V G x k K i V G  =   +  + − −       (10) Задача (9), (10) містить ( )K V G булевих змінних та ( )K V G обмежень – лінійних нерівностей. Об- меження (10) означають, що якщо вершина буде належати незалежній множині вершин в k -тій копії графа G , то ні одна з суміжних з нею вершин не може належати цій незалежній множині. Зауважимо, що для пошуку ( )K G та відповідних йому незалежних множин може бути використана за- дача (1), (2) та задача (1), (3) для числа незалежності графа K KG G I=  , отриманого як декартів добуток графа G та повного K -вершинного графа ( ( ), ( ))K K KI V I E I= . Має місце Лема 1. ( ) ( )K KG G I =  . Доведення леми 1 за допомогою формулювання задачі (1), (2) наведено в [3]. Доведення за допомогою формулювання задачі (1), (3) можна зробити за аналогічною схемою. Задачі (6) – (8) та (9), (10) можуть бути використані в алгоритмі Візинга-Плесневича для пошуку ( )G – мінімальної кількості кольорів для розфарбування вершин графа G , щоб суміжні вершини були розфарбовані різними кольорами. В основі алгоритму лежить наступна властивість чисел ( )K G та ( )KG . Лема 2. ( ) ( )  ( ) min : ( ) min : ( )k kG k G I G V k G G V  =  = = = . Перша рівність в лемі 2 є наслідком теореми 1 [3], а друга рівність випливає з леми 1. Для пошуку ( )G у графі, для якого ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , алгоритм Візинга-Плесневича на основі леми 2 та методу дихотомії передбачає такі кроки. Ініціалізація. На ітерації 0k = маємо min 1 = та max ( )V G = . Оскільки ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , то хроматичне число ( )G знаходиться всередині інтервалу min max[ ; ]  . Пе- рейдемо до чергової ітерації зі значеннями min та max . Ітеративний процес. Нехай на k -й ітерації знайдені min та max . Для переходу до ( 1)k + -ї ітерації ви- конуємо наступні дії. 1. Якщо max min 1.5 −  , то max( )G = , itn k= і зупиняємося. 2. Обчислимо ( )min max 2K  = +   , де    – найближче ціле число. Знайдемо ( )K G = , вирішуючи задачу (6) – (8) або задачу (9) – (10), або ( )KG = , вирішуючи задачу (1) – (2) або задачу (1) – (3). 3. Якщо ( )V G = , то max = , інакше min = . 4. Переходимо до ( 1)k + -ї ітерації з новими min та max . Наведений алгоритм знаходить хроматичне число графа G не більше ніж за ( )2(log ( ) 1)V G + ітерацій. 4. Задачі управління програмними проектами Задача 1. Нехай 25 фахівців – виконавців портфеля програмних проектів впорядковані згідно з алфавітгним порядком їх прізвищ і занумеровані числами від 1 до 25. У табл. 2 наведено дані про конфлікти між ними в попередніх проектах: номер фахівця (перша колонка), номери фахівців, з якими мав місце конфлікт (друга колонка). Таблиця 2 – Дані щодо конфліктів фахівців для графа 25G Номери фахівців, які конфліктували в попередніх проектах 1 21 10 2,6,16,23,25 19 9,13,17,22,24 2 6,10,11,15,22,23,24 11 2,4,14,15,16,23 20 4,5,12,16,18 3 13,17 12 5,20 21 1,4,8,14 4 5,8,11,14,16,20,21 13 3,7,9,17,19 22 2,6,17,19,24 , вирішуючи задачу (6) – (8) або задачу (9) – (10), або [Введите текст] Методи і засоби програмної інженерії [Введите текст] Якщо для графа ( ( ), ( ))G V G E G= у другому операторі описати множину вершин ( )V G , а у третьому – множину ребер ( )E G , то AMPL-код може бути використаний для пошуку ( )K G для того значення параметра "K", який задається у першому операторі. Задача (6) – (8) побудована на основі використання задачі (1), (2) для K копій графа G ( 1K  ). Якщо для цих же копій графа використовувати задачу (1), (3), то задачу для знаходження ( )K G можна записати за допомогою задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (9) за обмежень ( ) ( ) ( )( ) ( ) 1, , , ( 1) ( ) 1 , {1... }, .kj tj i ki j i t K j V G t k x x d K V G x k K i V G  =   +  + − −       (10) Задача (9), (10) містить ( )K V G булевих змінних та ( )K V G обмежень – лінійних нерівностей. Об- меження (10) означають, що якщо вершина буде належати незалежній множині вершин в k -тій копії графа G , то ні одна з суміжних з нею вершин не може належати цій незалежній множині. Зауважимо, що для пошуку ( )K G та відповідних йому незалежних множин може бути використана за- дача (1), (2) та задача (1), (3) для числа незалежності графа K KG G I=  , отриманого як декартів добуток графа G та повного K -вершинного графа ( ( ), ( ))K K KI V I E I= . Має місце Лема 1. ( ) ( )K KG G I =  . Доведення леми 1 за допомогою формулювання задачі (1), (2) наведено в [3]. Доведення за допомогою формулювання задачі (1), (3) можна зробити за аналогічною схемою. Задачі (6) – (8) та (9), (10) можуть бути використані в алгоритмі Візинга-Плесневича для пошуку ( )G – мінімальної кількості кольорів для розфарбування вершин графа G , щоб суміжні вершини були розфарбовані різними кольорами. В основі алгоритму лежить наступна властивість чисел ( )K G та ( )KG . Лема 2. ( ) ( )  ( ) min : ( ) min : ( )k kG k G I G V k G G V  =  = = = . Перша рівність в лемі 2 є наслідком теореми 1 [3], а друга рівність випливає з леми 1. Для пошуку ( )G у графі, для якого ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , алгоритм Візинга-Плесневича на основі леми 2 та методу дихотомії передбачає такі кроки. Ініціалізація. На ітерації 0k = маємо min 1 = та max ( )V G = . Оскільки ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , то хроматичне число ( )G знаходиться всередині інтервалу min max[ ; ]  . Пе- рейдемо до чергової ітерації зі значеннями min та max . Ітеративний процес. Нехай на k -й ітерації знайдені min та max . Для переходу до ( 1)k + -ї ітерації ви- конуємо наступні дії. 1. Якщо max min 1.5 −  , то max( )G = , itn k= і зупиняємося. 2. Обчислимо ( )min max 2K  = +   , де    – найближче ціле число. Знайдемо ( )K G = , вирішуючи задачу (6) – (8) або задачу (9) – (10), або ( )KG = , вирішуючи задачу (1) – (2) або задачу (1) – (3). 3. Якщо ( )V G = , то max = , інакше min = . 4. Переходимо до ( 1)k + -ї ітерації з новими min та max . Наведений алгоритм знаходить хроматичне число графа G не більше ніж за ( )2(log ( ) 1)V G + ітерацій. 4. Задачі управління програмними проектами Задача 1. Нехай 25 фахівців – виконавців портфеля програмних проектів впорядковані згідно з алфавітгним порядком їх прізвищ і занумеровані числами від 1 до 25. У табл. 2 наведено дані про конфлікти між ними в попередніх проектах: номер фахівця (перша колонка), номери фахівців, з якими мав місце конфлікт (друга колонка). Таблиця 2 – Дані щодо конфліктів фахівців для графа 25G Номери фахівців, які конфліктували в попередніх проектах 1 21 10 2,6,16,23,25 19 9,13,17,22,24 2 6,10,11,15,22,23,24 11 2,4,14,15,16,23 20 4,5,12,16,18 3 13,17 12 5,20 21 1,4,8,14 4 5,8,11,14,16,20,21 13 3,7,9,17,19 22 2,6,17,19,24 , вирішуючи задачу (1) – (2) або задачу (1) – (3). 3. Якщо [Введите текст] Методи і засоби програмної інженерії [Введите текст] Якщо для графа ( ( ), ( ))G V G E G= у другому операторі описати множину вершин ( )V G , а у третьому – множину ребер ( )E G , то AMPL-код може бути використаний для пошуку ( )K G для того значення параметра "K", який задається у першому операторі. Задача (6) – (8) побудована на основі використання задачі (1), (2) для K копій графа G ( 1K  ). Якщо для цих же копій графа використовувати задачу (1), (3), то задачу для знаходження ( )K G можна записати за допомогою задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (9) за обмежень ( ) ( ) ( )( ) ( ) 1, , , ( 1) ( ) 1 , {1... }, .kj tj i ki j i t K j V G t k x x d K V G x k K i V G  =   +  + − −       (10) Задача (9), (10) містить ( )K V G булевих змінних та ( )K V G обмежень – лінійних нерівностей. Об- меження (10) означають, що якщо вершина буде належати незалежній множині вершин в k -тій копії графа G , то ні одна з суміжних з нею вершин не може належати цій незалежній множині. Зауважимо, що для пошуку ( )K G та відповідних йому незалежних множин може бути використана за- дача (1), (2) та задача (1), (3) для числа незалежності графа K KG G I=  , отриманого як декартів добуток графа G та повного K -вершинного графа ( ( ), ( ))K K KI V I E I= . Має місце Лема 1. ( ) ( )K KG G I =  . Доведення леми 1 за допомогою формулювання задачі (1), (2) наведено в [3]. Доведення за допомогою формулювання задачі (1), (3) можна зробити за аналогічною схемою. Задачі (6) – (8) та (9), (10) можуть бути використані в алгоритмі Візинга-Плесневича для пошуку ( )G – мінімальної кількості кольорів для розфарбування вершин графа G , щоб суміжні вершини були розфарбовані різними кольорами. В основі алгоритму лежить наступна властивість чисел ( )K G та ( )KG . Лема 2. ( ) ( )  ( ) min : ( ) min : ( )k kG k G I G V k G G V  =  = = = . Перша рівність в лемі 2 є наслідком теореми 1 [3], а друга рівність випливає з леми 1. Для пошуку ( )G у графі, для якого ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , алгоритм Візинга-Плесневича на основі леми 2 та методу дихотомії передбачає такі кроки. Ініціалізація. На ітерації 0k = маємо min 1 = та max ( )V G = . Оскільки ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , то хроматичне число ( )G знаходиться всередині інтервалу min max[ ; ]  . Пе- рейдемо до чергової ітерації зі значеннями min та max . Ітеративний процес. Нехай на k -й ітерації знайдені min та max . Для переходу до ( 1)k + -ї ітерації ви- конуємо наступні дії. 1. Якщо max min 1.5 −  , то max( )G = , itn k= і зупиняємося. 2. Обчислимо ( )min max 2K  = +   , де    – найближче ціле число. Знайдемо ( )K G = , вирішуючи задачу (6) – (8) або задачу (9) – (10), або ( )KG = , вирішуючи задачу (1) – (2) або задачу (1) – (3). 3. Якщо ( )V G = , то max = , інакше min = . 4. Переходимо до ( 1)k + -ї ітерації з новими min та max . Наведений алгоритм знаходить хроматичне число графа G не більше ніж за ( )2(log ( ) 1)V G + ітерацій. 4. Задачі управління програмними проектами Задача 1. Нехай 25 фахівців – виконавців портфеля програмних проектів впорядковані згідно з алфавітгним порядком їх прізвищ і занумеровані числами від 1 до 25. У табл. 2 наведено дані про конфлікти між ними в попередніх проектах: номер фахівця (перша колонка), номери фахівців, з якими мав місце конфлікт (друга колонка). Таблиця 2 – Дані щодо конфліктів фахівців для графа 25G Номери фахівців, які конфліктували в попередніх проектах 1 21 10 2,6,16,23,25 19 9,13,17,22,24 2 6,10,11,15,22,23,24 11 2,4,14,15,16,23 20 4,5,12,16,18 3 13,17 12 5,20 21 1,4,8,14 4 5,8,11,14,16,20,21 13 3,7,9,17,19 22 2,6,17,19,24 . 4. Переходимо до [Введите текст] Методи і засоби програмної інженерії [Введите текст] Якщо для графа ( ( ), ( ))G V G E G= у другому операторі описати множину вершин ( )V G , а у третьому – множину ребер ( )E G , то AMPL-код може бути використаний для пошуку ( )K G для того значення параметра "K", який задається у першому операторі. Задача (6) – (8) побудована на основі використання задачі (1), (2) для K копій графа G ( 1K  ). Якщо для цих же копій графа використовувати задачу (1), (3), то задачу для знаходження ( )K G можна записати за допомогою задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (9) за обмежень ( ) ( ) ( )( ) ( ) 1, , , ( 1) ( ) 1 , {1... }, .kj tj i ki j i t K j V G t k x x d K V G x k K i V G  =   +  + − −       (10) Задача (9), (10) містить ( )K V G булевих змінних та ( )K V G обмежень – лінійних нерівностей. Об- меження (10) означають, що якщо вершина буде належати незалежній множині вершин в k -тій копії графа G , то ні одна з суміжних з нею вершин не може належати цій незалежній множині. Зауважимо, що для пошуку ( )K G та відповідних йому незалежних множин може бути використана за- дача (1), (2) та задача (1), (3) для числа незалежності графа K KG G I=  , отриманого як декартів добуток графа G та повного K -вершинного графа ( ( ), ( ))K K KI V I E I= . Має місце Лема 1. ( ) ( )K KG G I =  . Доведення леми 1 за допомогою формулювання задачі (1), (2) наведено в [3]. Доведення за допомогою формулювання задачі (1), (3) можна зробити за аналогічною схемою. Задачі (6) – (8) та (9), (10) можуть бути використані в алгоритмі Візинга-Плесневича для пошуку ( )G – мінімальної кількості кольорів для розфарбування вершин графа G , щоб суміжні вершини були розфарбовані різними кольорами. В основі алгоритму лежить наступна властивість чисел ( )K G та ( )KG . Лема 2. ( ) ( )  ( ) min : ( ) min : ( )k kG k G I G V k G G V  =  = = = . Перша рівність в лемі 2 є наслідком теореми 1 [3], а друга рівність випливає з леми 1. Для пошуку ( )G у графі, для якого ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , алгоритм Візинга-Плесневича на основі леми 2 та методу дихотомії передбачає такі кроки. Ініціалізація. На ітерації 0k = маємо min 1 = та max ( )V G = . Оскільки ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , то хроматичне число ( )G знаходиться всередині інтервалу min max[ ; ]  . Пе- рейдемо до чергової ітерації зі значеннями min та max . Ітеративний процес. Нехай на k -й ітерації знайдені min та max . Для переходу до ( 1)k + -ї ітерації ви- конуємо наступні дії. 1. Якщо max min 1.5 −  , то max( )G = , itn k= і зупиняємося. 2. Обчислимо ( )min max 2K  = +   , де    – найближче ціле число. Знайдемо ( )K G = , вирішуючи задачу (6) – (8) або задачу (9) – (10), або ( )KG = , вирішуючи задачу (1) – (2) або задачу (1) – (3). 3. Якщо ( )V G = , то max = , інакше min = . 4. Переходимо до ( 1)k + -ї ітерації з новими min та max . Наведений алгоритм знаходить хроматичне число графа G не більше ніж за ( )2(log ( ) 1)V G + ітерацій. 4. Задачі управління програмними проектами Задача 1. Нехай 25 фахівців – виконавців портфеля програмних проектів впорядковані згідно з алфавітгним порядком їх прізвищ і занумеровані числами від 1 до 25. У табл. 2 наведено дані про конфлікти між ними в попередніх проектах: номер фахівця (перша колонка), номери фахівців, з якими мав місце конфлікт (друга колонка). Таблиця 2 – Дані щодо конфліктів фахівців для графа 25G Номери фахівців, які конфліктували в попередніх проектах 1 21 10 2,6,16,23,25 19 9,13,17,22,24 2 6,10,11,15,22,23,24 11 2,4,14,15,16,23 20 4,5,12,16,18 3 13,17 12 5,20 21 1,4,8,14 4 5,8,11,14,16,20,21 13 3,7,9,17,19 22 2,6,17,19,24 . Наведений алгоритм знаходить хроматичне число графа G не більше ніж за [Введите текст] Методи і засоби програмної інженерії [Введите текст] Якщо для графа ( ( ), ( ))G V G E G= у другому операторі описати множину вершин ( )V G , а у третьому – множину ребер ( )E G , то AMPL-код може бути використаний для пошуку ( )K G для того значення параметра "K", який задається у першому операторі. Задача (6) – (8) побудована на основі використання задачі (1), (2) для K копій графа G ( 1K  ). Якщо для цих же копій графа використовувати задачу (1), (3), то задачу для знаходження ( )K G можна записати за допомогою задачі булевого лінійного програмування:  0,1 1 ( ) ( ) max ki K K kix k i V G G x  =  =   (9) за обмежень ( ) ( ) ( )( ) ( ) 1, , , ( 1) ( ) 1 , {1... }, .kj tj i ki j i t K j V G t k x x d K V G x k K i V G  =   +  + − −       (10) Задача (9), (10) містить ( )K V G булевих змінних та ( )K V G обмежень – лінійних нерівностей. Об- меження (10) означають, що якщо вершина буде належати незалежній множині вершин в k -тій копії графа G , то ні одна з суміжних з нею вершин не може належати цій незалежній множині. Зауважимо, що для пошуку ( )K G та відповідних йому незалежних множин може бути використана за- дача (1), (2) та задача (1), (3) для числа незалежності графа K KG G I=  , отриманого як декартів добуток графа G та повного K -вершинного графа ( ( ), ( ))K K KI V I E I= . Має місце Лема 1. ( ) ( )K KG G I =  . Доведення леми 1 за допомогою формулювання задачі (1), (2) наведено в [3]. Доведення за допомогою формулювання задачі (1), (3) можна зробити за аналогічною схемою. Задачі (6) – (8) та (9), (10) можуть бути використані в алгоритмі Візинга-Плесневича для пошуку ( )G – мінімальної кількості кольорів для розфарбування вершин графа G , щоб суміжні вершини були розфарбовані різними кольорами. В основі алгоритму лежить наступна властивість чисел ( )K G та ( )KG . Лема 2. ( ) ( )  ( ) min : ( ) min : ( )k kG k G I G V k G G V  =  = = = . Перша рівність в лемі 2 є наслідком теореми 1 [3], а друга рівність випливає з леми 1. Для пошуку ( )G у графі, для якого ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , алгоритм Візинга-Плесневича на основі леми 2 та методу дихотомії передбачає такі кроки. Ініціалізація. На ітерації 0k = маємо min 1 = та max ( )V G = . Оскільки ( )1 ( ) ( ) ( ) 1 2E G V G V G   − , то хроматичне число ( )G знаходиться всередині інтервалу min max[ ; ]  . Пе- рейдемо до чергової ітерації зі значеннями min та max . Ітеративний процес. Нехай на k -й ітерації знайдені min та max . Для переходу до ( 1)k + -ї ітерації ви- конуємо наступні дії. 1. Якщо max min 1.5 −  , то max( )G = , itn k= і зупиняємося. 2. Обчислимо ( )min max 2K  = +   , де    – найближче ціле число. Знайдемо ( )K G = , вирішуючи задачу (6) – (8) або задачу (9) – (10), або ( )KG = , вирішуючи задачу (1) – (2) або задачу (1) – (3). 3. Якщо ( )V G = , то max = , інакше min = . 4. Переходимо до ( 1)k + -ї ітерації з новими min та max . Наведений алгоритм знаходить хроматичне число графа G не більше ніж за ( )2(log ( ) 1)V G + ітерацій. 4. Задачі управління програмними проектами Задача 1. Нехай 25 фахівців – виконавців портфеля програмних проектів впорядковані згідно з алфавітгним порядком їх прізвищ і занумеровані числами від 1 до 25. У табл. 2 наведено дані про конфлікти між ними в попередніх проектах: номер фахівця (перша колонка), номери фахівців, з якими мав місце конфлікт (друга колонка). Таблиця 2 – Дані щодо конфліктів фахівців для графа 25G Номери фахівців, які конфліктували в попередніх проектах 1 21 10 2,6,16,23,25 19 9,13,17,22,24 2 6,10,11,15,22,23,24 11 2,4,14,15,16,23 20 4,5,12,16,18 3 13,17 12 5,20 21 1,4,8,14 4 5,8,11,14,16,20,21 13 3,7,9,17,19 22 2,6,17,19,24 ітерацій. 80 Методи і засоби програмної інженерії 4. Задачі управління програмними проектами Задача 1. Нехай 25 фахівців – виконавців портфеля програмних проектів впорядковані згідно з алфавіт- гним порядком їх прізвищ і занумеровані числами від 1 до 25. У табл. 2 наведено дані про конфлікти між ними в попередніх проектах: номер фахівця (перша колонка), номери фахівців, з якими мав місце конфлікт (друга колонка). Таблиця 2. Дані щодо конфліктів фахівців для графа G25 Номери фахівців, які конфліктували в попередніх проектах 1 21 10 2,6,16,23,25 19 9,13,17,22,24 2 6,10,11,15,22,23,24 11 2,4,14,15,16,23 20 4,5,12,16,18 3 13,17 12 5,20 21 1,4,8,14 4 5,8,11,14,16,20,21 13 3,7,9,17,19 22 2,6,17,19,24 5 4,8,12,20 14 4,11,15,21 23 2,10,11,16 6 2,10,17,22 15 2,11,14 24 2,9,19,22 7 9,13 16 4,10,11,18,20,23 25 10,16,18 8 4,5,21 17 3,6,13,19,22 9 7,13,19,24 18 16,20,25 Для AMPL-коду вершини графу Методи і засоби програмної інженерії 5 4,8,12,20 14 4,11,15,21 23 2,10,11,16 6 2,10,17,22 15 2,11,14 24 2,9,19,22 7 9,13 16 4,10,11,18,20,23 25 10,16,18 8 4,5,21 17 3,6,13,19,22 9 7,13,19,24 18 16,20,25 Для AMPL-коду вершини графу 25G задаються як: set V_G := {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25}; а матриця суміжності I_G має вигляд: param I_G: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 := 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 3 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 4 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 0 0 5 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 6 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 7 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 9 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 10 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 11 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 12 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 13 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 14 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 15 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 17 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 19 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 20 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 21 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 22 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 23 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 24 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 25 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0; Для графа 25G алгоритм знайшов 25( ) 10G = , якому відповідають 16 різних максимальних незалежних множин: set S[1] := 1 3 6 7 8 12 14 18 19 23; set S[2] := 1 3 6 7 8 12 15 23 24 25; set S[3] := 1 3 4 6 7 12 15 23 24 25; set S[4] := 1 3 6 7 8 12 15 19 23 25; set S[5] := 1 3 6 7 8 12 14 19 23 25; set S[6] := 1 3 6 7 8 12 14 18 23 24; set S[7] := 1 3 6 7 8 12 14 23 24 25; set S[8] := 1 3 6 7 8 14 19 20 23 25; set S[9] := 1 3 6 7 8 15 19 20 23 25; set S[10] := 1 3 4 6 7 12 15 18 23 24; set S[11] := 1 3 6 7 8 12 15 18 19 23; set S[12] := 1 3 6 7 8 12 15 18 23 24; set S[13] := 1 3 6 7 8 14 20 23 24 25; set S[14] := 1 3 4 6 7 12 15 18 19 23; set S[15] := 1 3 4 6 7 12 15 19 23 25; set S[16] := 1 3 6 7 8 15 20 23 24 25; і підтвердив, що сімнадцятої максимальної незалежної множини не існує. Крім підтримки формування прототипних складів згуртованих команд, запропоноване налаштування ал- горитму Візинга-Плесневича дозволяє також опрацювати обмеження традиційних методів календарно- ресурсного планування для спеціальних задач управління програмним проектом. Задача 2. Оптимізація розкладу автономного тестування компонентів повторного використання в складі критичної програмної системи. Нехай програмна система є результатом збірки 2n  незалежних компонентів повторного використання 1,..., nc c . Кожний з компонент має тестуватися на 1k спеціалізованих стендах або каркасах автономного тестування kss ,...,1 впродовж деякої одиниці часу проекту (дня, тижня тощо) 1m тестерами mtt ,...,1 . При цьому одночасне тестування кількох компонентів на одному стенді є неможливим, і для кожного тестера jt визначено множину ,},...,1,,...,1),,({ === kuniscoO uij (11) операцій тестування компонента ic на стенді us , які він може виконувати згідно зі своїми рольовими повнова- женнями. Необхідно скласти розклад тестування з мінімальним терміном. Для розв’язання задачі побудуємо граф з множинами вершин  kuniscoV ui ,...,1,,...,1),,( === та ребер VVE  , де ребра поєднують вершини, відповідні операціям, сумісне виконання яких в одну одиницю часу неможливе згідно з (11): задаються як: set V_G := {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,2 4,25}; а матриця суміжності I_G має вигляд: param I_G: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 := 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 3 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 4 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 0 0 5 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 6 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 7 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 9 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 10 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 11 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 12 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 13 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 14 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 15 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 17 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 19 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 20 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 21 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 22 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 23 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 24 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 25 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0; Для графа Методи і засоби програмної інженерії 5 4,8,12,20 14 4,11,15,21 23 2,10,11,16 6 2,10,17,22 15 2,11,14 24 2,9,19,22 7 9,13 16 4,10,11,18,20,23 25 10,16,18 8 4,5,21 17 3,6,13,19,22 9 7,13,19,24 18 16,20,25 Для AMPL-коду вершини графу 25G задаються як: set V_G := {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25}; а матриця суміжності I_G має вигляд: param I_G: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 := 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 3 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 4 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 0 0 5 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 6 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 7 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 9 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 10 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 11 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 12 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 13 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 14 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 15 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 17 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 19 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 20 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 21 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 22 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 23 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 24 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 25 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0; Для графа 25G алгоритм знайшов 25( ) 10G = , якому відповідають 16 різних максимальних незалежних множин: set S[1] := 1 3 6 7 8 12 14 18 19 23; set S[2] := 1 3 6 7 8 12 15 23 24 25; set S[3] := 1 3 4 6 7 12 15 23 24 25; set S[4] := 1 3 6 7 8 12 15 19 23 25; set S[5] := 1 3 6 7 8 12 14 19 23 25; set S[6] := 1 3 6 7 8 12 14 18 23 24; set S[7] := 1 3 6 7 8 12 14 23 24 25; set S[8] := 1 3 6 7 8 14 19 20 23 25; set S[9] := 1 3 6 7 8 15 19 20 23 25; set S[10] := 1 3 4 6 7 12 15 18 23 24; set S[11] := 1 3 6 7 8 12 15 18 19 23; set S[12] := 1 3 6 7 8 12 15 18 23 24; set S[13] := 1 3 6 7 8 14 20 23 24 25; set S[14] := 1 3 4 6 7 12 15 18 19 23; set S[15] := 1 3 4 6 7 12 15 19 23 25; set S[16] := 1 3 6 7 8 15 20 23 24 25; і підтвердив, що сімнадцятої максимальної незалежної множини не існує. Крім підтримки формування прототипних складів згуртованих команд, запропоноване налаштування ал- горитму Візинга-Плесневича дозволяє також опрацювати обмеження традиційних методів календарно- ресурсного планування для спеціальних задач управління програмним проектом. Задача 2. Оптимізація розкладу автономного тестування компонентів повторного використання в складі критичної програмної системи. Нехай програмна система є результатом збірки 2n  незалежних компонентів повторного використання 1,..., nc c . Кожний з компонент має тестуватися на 1k спеціалізованих стендах або каркасах автономного тестування kss ,...,1 впродовж деякої одиниці часу проекту (дня, тижня тощо) 1m тестерами mtt ,...,1 . При цьому одночасне тестування кількох компонентів на одному стенді є неможливим, і для кожного тестера jt визначено множину ,},...,1,,...,1),,({ === kuniscoO uij (11) операцій тестування компонента ic на стенді us , які він може виконувати згідно зі своїми рольовими повнова- женнями. Необхідно скласти розклад тестування з мінімальним терміном. Для розв’язання задачі побудуємо граф з множинами вершин  kuniscoV ui ,...,1,,...,1),,( === та ребер VVE  , де ребра поєднують вершини, відповідні операціям, сумісне виконання яких в одну одиницю часу неможливе згідно з (11): алгоритм знайшов Методи і засоби програмної інженерії 5 4,8,12,20 14 4,11,15,21 23 2,10,11,16 6 2,10,17,22 15 2,11,14 24 2,9,19,22 7 9,13 16 4,10,11,18,20,23 25 10,16,18 8 4,5,21 17 3,6,13,19,22 9 7,13,19,24 18 16,20,25 Для AMPL-коду вершини графу 25G задаються як: set V_G := {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25}; а матриця суміжності I_G має вигляд: param I_G: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 := 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 3 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 4 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 0 0 5 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 6 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 7 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 9 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 10 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 11 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 12 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 13 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 14 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 15 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 17 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 19 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 20 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 21 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 22 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 23 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 24 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 25 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0; Для графа 25G алгоритм знайшов 25( ) 10G = , якому відповідають 16 різних максимальних незалежних множин: set S[1] := 1 3 6 7 8 12 14 18 19 23; set S[2] := 1 3 6 7 8 12 15 23 24 25; set S[3] := 1 3 4 6 7 12 15 23 24 25; set S[4] := 1 3 6 7 8 12 15 19 23 25; set S[5] := 1 3 6 7 8 12 14 19 23 25; set S[6] := 1 3 6 7 8 12 14 18 23 24; set S[7] := 1 3 6 7 8 12 14 23 24 25; set S[8] := 1 3 6 7 8 14 19 20 23 25; set S[9] := 1 3 6 7 8 15 19 20 23 25; set S[10] := 1 3 4 6 7 12 15 18 23 24; set S[11] := 1 3 6 7 8 12 15 18 19 23; set S[12] := 1 3 6 7 8 12 15 18 23 24; set S[13] := 1 3 6 7 8 14 20 23 24 25; set S[14] := 1 3 4 6 7 12 15 18 19 23; set S[15] := 1 3 4 6 7 12 15 19 23 25; set S[16] := 1 3 6 7 8 15 20 23 24 25; і підтвердив, що сімнадцятої максимальної незалежної множини не існує. Крім підтримки формування прототипних складів згуртованих команд, запропоноване налаштування ал- горитму Візинга-Плесневича дозволяє також опрацювати обмеження традиційних методів календарно- ресурсного планування для спеціальних задач управління програмним проектом. Задача 2. Оптимізація розкладу автономного тестування компонентів повторного використання в складі критичної програмної системи. Нехай програмна система є результатом збірки 2n  незалежних компонентів повторного використання 1,..., nc c . Кожний з компонент має тестуватися на 1k спеціалізованих стендах або каркасах автономного тестування kss ,...,1 впродовж деякої одиниці часу проекту (дня, тижня тощо) 1m тестерами mtt ,...,1 . При цьому одночасне тестування кількох компонентів на одному стенді є неможливим, і для кожного тестера jt визначено множину ,},...,1,,...,1),,({ === kuniscoO uij (11) операцій тестування компонента ic на стенді us , які він може виконувати згідно зі своїми рольовими повнова- женнями. Необхідно скласти розклад тестування з мінімальним терміном. Для розв’язання задачі побудуємо граф з множинами вершин  kuniscoV ui ,...,1,,...,1),,( === та ребер VVE  , де ребра поєднують вершини, відповідні операціям, сумісне виконання яких в одну одиницю часу неможливе згідно з (11): , якому відповідають 16 різних максимальних незалежних множин: set S[1] := 1 3 6 7 8 12 14 18 19 23; set S[2] := 1 3 6 7 8 12 15 23 24 25; set S[3] := 1 3 4 6 7 12 15 23 24 25; set S[4] := 1 3 6 7 8 12 15 19 23 25; set S[5] := 1 3 6 7 8 12 14 19 23 25; set S[6] := 1 3 6 7 8 12 14 18 23 24; set S[7] := 1 3 6 7 8 12 14 23 24 25; set S[8] := 1 3 6 7 8 14 19 20 23 25; set S[9] := 1 3 6 7 8 15 19 20 23 25; set S[10] := 1 3 4 6 7 12 15 18 23 24; set S[11] := 1 3 6 7 8 12 15 18 19 23; set S[12] := 1 3 6 7 8 12 15 18 23 24; set S[13] := 1 3 6 7 8 14 20 23 24 25; set S[14] := 1 3 4 6 7 12 15 18 19 23; set S[15] := 1 3 4 6 7 12 15 19 23 25; set S[16] := 1 3 6 7 8 15 20 23 24 25; і підтвердив, що сімнадцятої максимальної незалежної множини не існує. 81 Методи і засоби програмної інженерії Крім підтримки формування прототипних складів згуртованих команд, запропоноване налаштування алгоритму Візинга-Плесневича дозволяє також опрацювати обмеження традиційних методів календарно-ре- сурсного планування для спеціальних задач управління програмним проектом. Задача 2. Оптимізація розкладу автономного тестування компонентів повторного використання в скла- ді критичної програмної системи. Нехай програмна система є результатом збірки Методи і засоби програмної інженерії 5 4,8,12,20 14 4,11,15,21 23 2,10,11,16 6 2,10,17,22 15 2,11,14 24 2,9,19,22 7 9,13 16 4,10,11,18,20,23 25 10,16,18 8 4,5,21 17 3,6,13,19,22 9 7,13,19,24 18 16,20,25 Для AMPL-коду вершини графу 25G задаються як: set V_G := {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25}; а матриця суміжності I_G має вигляд: param I_G: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 := 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 3 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 4 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 0 0 5 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 6 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 7 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 9 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 10 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 11 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 12 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 13 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 14 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 15 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 17 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 19 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 20 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 21 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 22 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 23 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 24 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 25 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0; Для графа 25G алгоритм знайшов 25( ) 10G = , якому відповідають 16 різних максимальних незалежних множин: set S[1] := 1 3 6 7 8 12 14 18 19 23; set S[2] := 1 3 6 7 8 12 15 23 24 25; set S[3] := 1 3 4 6 7 12 15 23 24 25; set S[4] := 1 3 6 7 8 12 15 19 23 25; set S[5] := 1 3 6 7 8 12 14 19 23 25; set S[6] := 1 3 6 7 8 12 14 18 23 24; set S[7] := 1 3 6 7 8 12 14 23 24 25; set S[8] := 1 3 6 7 8 14 19 20 23 25; set S[9] := 1 3 6 7 8 15 19 20 23 25; set S[10] := 1 3 4 6 7 12 15 18 23 24; set S[11] := 1 3 6 7 8 12 15 18 19 23; set S[12] := 1 3 6 7 8 12 15 18 23 24; set S[13] := 1 3 6 7 8 14 20 23 24 25; set S[14] := 1 3 4 6 7 12 15 18 19 23; set S[15] := 1 3 4 6 7 12 15 19 23 25; set S[16] := 1 3 6 7 8 15 20 23 24 25; і підтвердив, що сімнадцятої максимальної незалежної множини не існує. Крім підтримки формування прототипних складів згуртованих команд, запропоноване налаштування ал- горитму Візинга-Плесневича дозволяє також опрацювати обмеження традиційних методів календарно- ресурсного планування для спеціальних задач управління програмним проектом. Задача 2. Оптимізація розкладу автономного тестування компонентів повторного використання в складі критичної програмної системи. Нехай програмна система є результатом збірки 2n  незалежних компонентів повторного використання 1,..., nc c . Кожний з компонент має тестуватися на 1k спеціалізованих стендах або каркасах автономного тестування kss ,...,1 впродовж деякої одиниці часу проекту (дня, тижня тощо) 1m тестерами mtt ,...,1 . При цьому одночасне тестування кількох компонентів на одному стенді є неможливим, і для кожного тестера jt визначено множину ,},...,1,,...,1),,({ === kuniscoO uij (11) операцій тестування компонента ic на стенді us , які він може виконувати згідно зі своїми рольовими повнова- женнями. Необхідно скласти розклад тестування з мінімальним терміном. Для розв’язання задачі побудуємо граф з множинами вершин  kuniscoV ui ,...,1,,...,1),,( === та ребер VVE  , де ребра поєднують вершини, відповідні операціям, сумісне виконання яких в одну одиницю часу неможливе згідно з (11): незалежних компонентів повторного використан- ня Методи і засоби програмної інженерії 5 4,8,12,20 14 4,11,15,21 23 2,10,11,16 6 2,10,17,22 15 2,11,14 24 2,9,19,22 7 9,13 16 4,10,11,18,20,23 25 10,16,18 8 4,5,21 17 3,6,13,19,22 9 7,13,19,24 18 16,20,25 Для AMPL-коду вершини графу 25G задаються як: set V_G := {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25}; а матриця суміжності I_G має вигляд: param I_G: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 := 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 3 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 4 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 0 0 5 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 6 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 7 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 9 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 10 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 11 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 12 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 13 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 14 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 15 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 17 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 19 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 20 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 21 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 22 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 23 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 24 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 25 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0; Для графа 25G алгоритм знайшов 25( ) 10G = , якому відповідають 16 різних максимальних незалежних множин: set S[1] := 1 3 6 7 8 12 14 18 19 23; set S[2] := 1 3 6 7 8 12 15 23 24 25; set S[3] := 1 3 4 6 7 12 15 23 24 25; set S[4] := 1 3 6 7 8 12 15 19 23 25; set S[5] := 1 3 6 7 8 12 14 19 23 25; set S[6] := 1 3 6 7 8 12 14 18 23 24; set S[7] := 1 3 6 7 8 12 14 23 24 25; set S[8] := 1 3 6 7 8 14 19 20 23 25; set S[9] := 1 3 6 7 8 15 19 20 23 25; set S[10] := 1 3 4 6 7 12 15 18 23 24; set S[11] := 1 3 6 7 8 12 15 18 19 23; set S[12] := 1 3 6 7 8 12 15 18 23 24; set S[13] := 1 3 6 7 8 14 20 23 24 25; set S[14] := 1 3 4 6 7 12 15 18 19 23; set S[15] := 1 3 4 6 7 12 15 19 23 25; set S[16] := 1 3 6 7 8 15 20 23 24 25; і підтвердив, що сімнадцятої максимальної незалежної множини не існує. Крім підтримки формування прототипних складів згуртованих команд, запропоноване налаштування ал- горитму Візинга-Плесневича дозволяє також опрацювати обмеження традиційних методів календарно- ресурсного планування для спеціальних задач управління програмним проектом. Задача 2. Оптимізація розкладу автономного тестування компонентів повторного використання в складі критичної програмної системи. Нехай програмна система є результатом збірки 2n  незалежних компонентів повторного використання 1,..., nc c . Кожний з компонент має тестуватися на 1k спеціалізованих стендах або каркасах автономного тестування kss ,...,1 впродовж деякої одиниці часу проекту (дня, тижня тощо) 1m тестерами mtt ,...,1 . При цьому одночасне тестування кількох компонентів на одному стенді є неможливим, і для кожного тестера jt визначено множину ,},...,1,,...,1),,({ === kuniscoO uij (11) операцій тестування компонента ic на стенді us , які він може виконувати згідно зі своїми рольовими повнова- женнями. Необхідно скласти розклад тестування з мінімальним терміном. Для розв’язання задачі побудуємо граф з множинами вершин  kuniscoV ui ,...,1,,...,1),,( === та ребер VVE  , де ребра поєднують вершини, відповідні операціям, сумісне виконання яких в одну одиницю часу неможливе згідно з (11): . Кожний з компонент має тестуватися на Методи і засоби програмної інженерії 5 4,8,12,20 14 4,11,15,21 23 2,10,11,16 6 2,10,17,22 15 2,11,14 24 2,9,19,22 7 9,13 16 4,10,11,18,20,23 25 10,16,18 8 4,5,21 17 3,6,13,19,22 9 7,13,19,24 18 16,20,25 Для AMPL-коду вершини графу 25G задаються як: set V_G := {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25}; а матриця суміжності I_G має вигляд: param I_G: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 := 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 3 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 4 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 0 0 5 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 6 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 7 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 9 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 10 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 11 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 12 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 13 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 14 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 15 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 17 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 19 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 20 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 21 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 22 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 23 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 24 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 25 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0; Для графа 25G алгоритм знайшов 25( ) 10G = , якому відповідають 16 різних максимальних незалежних множин: set S[1] := 1 3 6 7 8 12 14 18 19 23; set S[2] := 1 3 6 7 8 12 15 23 24 25; set S[3] := 1 3 4 6 7 12 15 23 24 25; set S[4] := 1 3 6 7 8 12 15 19 23 25; set S[5] := 1 3 6 7 8 12 14 19 23 25; set S[6] := 1 3 6 7 8 12 14 18 23 24; set S[7] := 1 3 6 7 8 12 14 23 24 25; set S[8] := 1 3 6 7 8 14 19 20 23 25; set S[9] := 1 3 6 7 8 15 19 20 23 25; set S[10] := 1 3 4 6 7 12 15 18 23 24; set S[11] := 1 3 6 7 8 12 15 18 19 23; set S[12] := 1 3 6 7 8 12 15 18 23 24; set S[13] := 1 3 6 7 8 14 20 23 24 25; set S[14] := 1 3 4 6 7 12 15 18 19 23; set S[15] := 1 3 4 6 7 12 15 19 23 25; set S[16] := 1 3 6 7 8 15 20 23 24 25; і підтвердив, що сімнадцятої максимальної незалежної множини не існує. Крім підтримки формування прототипних складів згуртованих команд, запропоноване налаштування ал- горитму Візинга-Плесневича дозволяє також опрацювати обмеження традиційних методів календарно- ресурсного планування для спеціальних задач управління програмним проектом. Задача 2. Оптимізація розкладу автономного тестування компонентів повторного використання в складі критичної програмної системи. Нехай програмна система є результатом збірки 2n  незалежних компонентів повторного використання 1,..., nc c . Кожний з компонент має тестуватися на 1k спеціалізованих стендах або каркасах автономного тестування kss ,...,1 впродовж деякої одиниці часу проекту (дня, тижня тощо) 1m тестерами mtt ,...,1 . При цьому одночасне тестування кількох компонентів на одному стенді є неможливим, і для кожного тестера jt визначено множину ,},...,1,,...,1),,({ === kuniscoO uij (11) операцій тестування компонента ic на стенді us , які він може виконувати згідно зі своїми рольовими повнова- женнями. Необхідно скласти розклад тестування з мінімальним терміном. Для розв’язання задачі побудуємо граф з множинами вершин  kuniscoV ui ,...,1,,...,1),,( === та ребер VVE  , де ребра поєднують вершини, відповідні операціям, сумісне виконання яких в одну одиницю часу неможливе згідно з (11): спеціалізованих стендах або каркасах автономного тестування Методи і засоби програмної інженерії 5 4,8,12,20 14 4,11,15,21 23 2,10,11,16 6 2,10,17,22 15 2,11,14 24 2,9,19,22 7 9,13 16 4,10,11,18,20,23 25 10,16,18 8 4,5,21 17 3,6,13,19,22 9 7,13,19,24 18 16,20,25 Для AMPL-коду вершини графу 25G задаються як: set V_G := {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25}; а матриця суміжності I_G має вигляд: param I_G: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 := 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 3 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 4 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 0 0 5 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 6 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 7 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 9 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 10 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 11 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 12 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 13 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 14 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 15 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 17 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 19 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 20 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 21 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 22 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 23 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 24 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 25 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0; Для графа 25G алгоритм знайшов 25( ) 10G = , якому відповідають 16 різних максимальних незалежних множин: set S[1] := 1 3 6 7 8 12 14 18 19 23; set S[2] := 1 3 6 7 8 12 15 23 24 25; set S[3] := 1 3 4 6 7 12 15 23 24 25; set S[4] := 1 3 6 7 8 12 15 19 23 25; set S[5] := 1 3 6 7 8 12 14 19 23 25; set S[6] := 1 3 6 7 8 12 14 18 23 24; set S[7] := 1 3 6 7 8 12 14 23 24 25; set S[8] := 1 3 6 7 8 14 19 20 23 25; set S[9] := 1 3 6 7 8 15 19 20 23 25; set S[10] := 1 3 4 6 7 12 15 18 23 24; set S[11] := 1 3 6 7 8 12 15 18 19 23; set S[12] := 1 3 6 7 8 12 15 18 23 24; set S[13] := 1 3 6 7 8 14 20 23 24 25; set S[14] := 1 3 4 6 7 12 15 18 19 23; set S[15] := 1 3 4 6 7 12 15 19 23 25; set S[16] := 1 3 6 7 8 15 20 23 24 25; і підтвердив, що сімнадцятої максимальної незалежної множини не існує. Крім підтримки формування прототипних складів згуртованих команд, запропоноване налаштування ал- горитму Візинга-Плесневича дозволяє також опрацювати обмеження традиційних методів календарно- ресурсного планування для спеціальних задач управління програмним проектом. Задача 2. Оптимізація розкладу автономного тестування компонентів повторного використання в складі критичної програмної системи. Нехай програмна система є результатом збірки 2n  незалежних компонентів повторного використання 1,..., nc c . Кожний з компонент має тестуватися на 1k спеціалізованих стендах або каркасах автономного тестування kss ,...,1 впродовж деякої одиниці часу проекту (дня, тижня тощо) 1m тестерами mtt ,...,1 . При цьому одночасне тестування кількох компонентів на одному стенді є неможливим, і для кожного тестера jt визначено множину ,},...,1,,...,1),,({ === kuniscoO uij (11) операцій тестування компонента ic на стенді us , які він може виконувати згідно зі своїми рольовими повнова- женнями. Необхідно скласти розклад тестування з мінімальним терміном. Для розв’язання задачі побудуємо граф з множинами вершин  kuniscoV ui ,...,1,,...,1),,( === та ребер VVE  , де ребра поєднують вершини, відповідні операціям, сумісне виконання яких в одну одиницю часу неможливе згідно з (11): впродовж деякої одиниці часу проекту (дня, тижня тощо) Методи і засоби програмної інженерії 5 4,8,12,20 14 4,11,15,21 23 2,10,11,16 6 2,10,17,22 15 2,11,14 24 2,9,19,22 7 9,13 16 4,10,11,18,20,23 25 10,16,18 8 4,5,21 17 3,6,13,19,22 9 7,13,19,24 18 16,20,25 Для AMPL-коду вершини графу 25G задаються як: set V_G := {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25}; а матриця суміжності I_G має вигляд: param I_G: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 := 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 3 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 4 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 0 0 5 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 6 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 7 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 9 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 10 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 11 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 12 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 13 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 14 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 15 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 17 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 19 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 20 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 21 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 22 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 23 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 24 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 25 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0; Для графа 25G алгоритм знайшов 25( ) 10G = , якому відповідають 16 різних максимальних незалежних множин: set S[1] := 1 3 6 7 8 12 14 18 19 23; set S[2] := 1 3 6 7 8 12 15 23 24 25; set S[3] := 1 3 4 6 7 12 15 23 24 25; set S[4] := 1 3 6 7 8 12 15 19 23 25; set S[5] := 1 3 6 7 8 12 14 19 23 25; set S[6] := 1 3 6 7 8 12 14 18 23 24; set S[7] := 1 3 6 7 8 12 14 23 24 25; set S[8] := 1 3 6 7 8 14 19 20 23 25; set S[9] := 1 3 6 7 8 15 19 20 23 25; set S[10] := 1 3 4 6 7 12 15 18 23 24; set S[11] := 1 3 6 7 8 12 15 18 19 23; set S[12] := 1 3 6 7 8 12 15 18 23 24; set S[13] := 1 3 6 7 8 14 20 23 24 25; set S[14] := 1 3 4 6 7 12 15 18 19 23; set S[15] := 1 3 4 6 7 12 15 19 23 25; set S[16] := 1 3 6 7 8 15 20 23 24 25; і підтвердив, що сімнадцятої максимальної незалежної множини не існує. Крім підтримки формування прототипних складів згуртованих команд, запропоноване налаштування ал- горитму Візинга-Плесневича дозволяє також опрацювати обмеження традиційних методів календарно- ресурсного планування для спеціальних задач управління програмним проектом. Задача 2. Оптимізація розкладу автономного тестування компонентів повторного використання в складі критичної програмної системи. Нехай програмна система є результатом збірки 2n  незалежних компонентів повторного використання 1,..., nc c . Кожний з компонент має тестуватися на 1k спеціалізованих стендах або каркасах автономного тестування kss ,...,1 впродовж деякої одиниці часу проекту (дня, тижня тощо) 1m тестерами mtt ,...,1 . При цьому одночасне тестування кількох компонентів на одному стенді є неможливим, і для кожного тестера jt визначено множину ,},...,1,,...,1),,({ === kuniscoO uij (11) операцій тестування компонента ic на стенді us , які він може виконувати згідно зі своїми рольовими повнова- женнями. Необхідно скласти розклад тестування з мінімальним терміном. Для розв’язання задачі побудуємо граф з множинами вершин  kuniscoV ui ,...,1,,...,1),,( === та ребер VVE  , де ребра поєднують вершини, відповідні операціям, сумісне виконання яких в одну одиницю часу неможливе згідно з (11): . При цьому одночасне тестування кількох компонентів на одному стенді є неможливим, і для кожного тестера Методи і засоби програмної інженерії 5 4,8,12,20 14 4,11,15,21 23 2,10,11,16 6 2,10,17,22 15 2,11,14 24 2,9,19,22 7 9,13 16 4,10,11,18,20,23 25 10,16,18 8 4,5,21 17 3,6,13,19,22 9 7,13,19,24 18 16,20,25 Для AMPL-коду вершини графу 25G задаються як: set V_G := {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25}; а матриця суміжності I_G має вигляд: param I_G: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 := 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 3 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 4 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 0 0 5 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 6 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 7 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 9 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 10 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 11 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 12 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 13 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 14 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 15 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 17 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 19 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 20 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 21 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 22 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 23 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 24 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 25 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0; Для графа 25G алгоритм знайшов 25( ) 10G = , якому відповідають 16 різних максимальних незалежних множин: set S[1] := 1 3 6 7 8 12 14 18 19 23; set S[2] := 1 3 6 7 8 12 15 23 24 25; set S[3] := 1 3 4 6 7 12 15 23 24 25; set S[4] := 1 3 6 7 8 12 15 19 23 25; set S[5] := 1 3 6 7 8 12 14 19 23 25; set S[6] := 1 3 6 7 8 12 14 18 23 24; set S[7] := 1 3 6 7 8 12 14 23 24 25; set S[8] := 1 3 6 7 8 14 19 20 23 25; set S[9] := 1 3 6 7 8 15 19 20 23 25; set S[10] := 1 3 4 6 7 12 15 18 23 24; set S[11] := 1 3 6 7 8 12 15 18 19 23; set S[12] := 1 3 6 7 8 12 15 18 23 24; set S[13] := 1 3 6 7 8 14 20 23 24 25; set S[14] := 1 3 4 6 7 12 15 18 19 23; set S[15] := 1 3 4 6 7 12 15 19 23 25; set S[16] := 1 3 6 7 8 15 20 23 24 25; і підтвердив, що сімнадцятої максимальної незалежної множини не існує. Крім підтримки формування прототипних складів згуртованих команд, запропоноване налаштування ал- горитму Візинга-Плесневича дозволяє також опрацювати обмеження традиційних методів календарно- ресурсного планування для спеціальних задач управління програмним проектом. Задача 2. Оптимізація розкладу автономного тестування компонентів повторного використання в складі критичної програмної системи. Нехай програмна система є результатом збірки 2n  незалежних компонентів повторного використання 1,..., nc c . Кожний з компонент має тестуватися на 1k спеціалізованих стендах або каркасах автономного тестування kss ,...,1 впродовж деякої одиниці часу проекту (дня, тижня тощо) 1m тестерами mtt ,...,1 . При цьому одночасне тестування кількох компонентів на одному стенді є неможливим, і для кожного тестера jt визначено множину ,},...,1,,...,1),,({ === kuniscoO uij (11) операцій тестування компонента ic на стенді us , які він може виконувати згідно зі своїми рольовими повнова- женнями. Необхідно скласти розклад тестування з мінімальним терміном. Для розв’язання задачі побудуємо граф з множинами вершин  kuniscoV ui ,...,1,,...,1),,( === та ребер VVE  , де ребра поєднують вершини, відповідні операціям, сумісне виконання яких в одну одиницю часу неможливе згідно з (11): ви- значено множину Методи і засоби програмної інженерії 5 4,8,12,20 14 4,11,15,21 23 2,10,11,16 6 2,10,17,22 15 2,11,14 24 2,9,19,22 7 9,13 16 4,10,11,18,20,23 25 10,16,18 8 4,5,21 17 3,6,13,19,22 9 7,13,19,24 18 16,20,25 Для AMPL-коду вершини графу 25G задаються як: set V_G := {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25}; а матриця суміжності I_G має вигляд: param I_G: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 := 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 3 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 4 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 0 0 5 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 6 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 7 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 9 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 10 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 11 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 12 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 13 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 14 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 15 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 17 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 19 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 20 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 21 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 22 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 23 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 24 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 25 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0; Для графа 25G алгоритм знайшов 25( ) 10G = , якому відповідають 16 різних максимальних незалежних множин: set S[1] := 1 3 6 7 8 12 14 18 19 23; set S[2] := 1 3 6 7 8 12 15 23 24 25; set S[3] := 1 3 4 6 7 12 15 23 24 25; set S[4] := 1 3 6 7 8 12 15 19 23 25; set S[5] := 1 3 6 7 8 12 14 19 23 25; set S[6] := 1 3 6 7 8 12 14 18 23 24; set S[7] := 1 3 6 7 8 12 14 23 24 25; set S[8] := 1 3 6 7 8 14 19 20 23 25; set S[9] := 1 3 6 7 8 15 19 20 23 25; set S[10] := 1 3 4 6 7 12 15 18 23 24; set S[11] := 1 3 6 7 8 12 15 18 19 23; set S[12] := 1 3 6 7 8 12 15 18 23 24; set S[13] := 1 3 6 7 8 14 20 23 24 25; set S[14] := 1 3 4 6 7 12 15 18 19 23; set S[15] := 1 3 4 6 7 12 15 19 23 25; set S[16] := 1 3 6 7 8 15 20 23 24 25; і підтвердив, що сімнадцятої максимальної незалежної множини не існує. Крім підтримки формування прототипних складів згуртованих команд, запропоноване налаштування ал- горитму Візинга-Плесневича дозволяє також опрацювати обмеження традиційних методів календарно- ресурсного планування для спеціальних задач управління програмним проектом. Задача 2. Оптимізація розкладу автономного тестування компонентів повторного використання в складі критичної програмної системи. Нехай програмна система є результатом збірки 2n  незалежних компонентів повторного використання 1,..., nc c . Кожний з компонент має тестуватися на 1k спеціалізованих стендах або каркасах автономного тестування kss ,...,1 впродовж деякої одиниці часу проекту (дня, тижня тощо) 1m тестерами mtt ,...,1 . При цьому одночасне тестування кількох компонентів на одному стенді є неможливим, і для кожного тестера jt визначено множину ,},...,1,,...,1),,({ === kuniscoO uij (11) операцій тестування компонента ic на стенді us , які він може виконувати згідно зі своїми рольовими повнова- женнями. Необхідно скласти розклад тестування з мінімальним терміном. Для розв’язання задачі побудуємо граф з множинами вершин  kuniscoV ui ,...,1,,...,1),,( === та ребер VVE  , де ребра поєднують вершини, відповідні операціям, сумісне виконання яких в одну одиницю часу неможливе згідно з (11): (11) операцій тестування компонента Методи і засоби програмної інженерії 5 4,8,12,20 14 4,11,15,21 23 2,10,11,16 6 2,10,17,22 15 2,11,14 24 2,9,19,22 7 9,13 16 4,10,11,18,20,23 25 10,16,18 8 4,5,21 17 3,6,13,19,22 9 7,13,19,24 18 16,20,25 Для AMPL-коду вершини графу 25G задаються як: set V_G := {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25}; а матриця суміжності I_G має вигляд: param I_G: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 := 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 3 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 4 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 0 0 5 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 6 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 7 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 9 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 10 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 11 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 12 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 13 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 14 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 15 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 17 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 19 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 20 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 21 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 22 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 23 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 24 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 25 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0; Для графа 25G алгоритм знайшов 25( ) 10G = , якому відповідають 16 різних максимальних незалежних множин: set S[1] := 1 3 6 7 8 12 14 18 19 23; set S[2] := 1 3 6 7 8 12 15 23 24 25; set S[3] := 1 3 4 6 7 12 15 23 24 25; set S[4] := 1 3 6 7 8 12 15 19 23 25; set S[5] := 1 3 6 7 8 12 14 19 23 25; set S[6] := 1 3 6 7 8 12 14 18 23 24; set S[7] := 1 3 6 7 8 12 14 23 24 25; set S[8] := 1 3 6 7 8 14 19 20 23 25; set S[9] := 1 3 6 7 8 15 19 20 23 25; set S[10] := 1 3 4 6 7 12 15 18 23 24; set S[11] := 1 3 6 7 8 12 15 18 19 23; set S[12] := 1 3 6 7 8 12 15 18 23 24; set S[13] := 1 3 6 7 8 14 20 23 24 25; set S[14] := 1 3 4 6 7 12 15 18 19 23; set S[15] := 1 3 4 6 7 12 15 19 23 25; set S[16] := 1 3 6 7 8 15 20 23 24 25; і підтвердив, що сімнадцятої максимальної незалежної множини не існує. Крім підтримки формування прототипних складів згуртованих команд, запропоноване налаштування ал- горитму Візинга-Плесневича дозволяє також опрацювати обмеження традиційних методів календарно- ресурсного планування для спеціальних задач управління програмним проектом. Задача 2. Оптимізація розкладу автономного тестування компонентів повторного використання в складі критичної програмної системи. Нехай програмна система є результатом збірки 2n  незалежних компонентів повторного використання 1,..., nc c . Кожний з компонент має тестуватися на 1k спеціалізованих стендах або каркасах автономного тестування kss ,...,1 впродовж деякої одиниці часу проекту (дня, тижня тощо) 1m тестерами mtt ,...,1 . При цьому одночасне тестування кількох компонентів на одному стенді є неможливим, і для кожного тестера jt визначено множину ,},...,1,,...,1),,({ === kuniscoO uij (11) операцій тестування компонента ic на стенді us , які він може виконувати згідно зі своїми рольовими повнова- женнями. Необхідно скласти розклад тестування з мінімальним терміном. Для розв’язання задачі побудуємо граф з множинами вершин  kuniscoV ui ,...,1,,...,1),,( === та ребер VVE  , де ребра поєднують вершини, відповідні операціям, сумісне виконання яких в одну одиницю часу неможливе згідно з (11): на стенді Методи і засоби програмної інженерії 5 4,8,12,20 14 4,11,15,21 23 2,10,11,16 6 2,10,17,22 15 2,11,14 24 2,9,19,22 7 9,13 16 4,10,11,18,20,23 25 10,16,18 8 4,5,21 17 3,6,13,19,22 9 7,13,19,24 18 16,20,25 Для AMPL-коду вершини графу 25G задаються як: set V_G := {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25}; а матриця суміжності I_G має вигляд: param I_G: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 := 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 3 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 4 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 0 0 5 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 6 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 7 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 9 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 10 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 11 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 12 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 13 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 14 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 15 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 17 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 19 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 20 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 21 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 22 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 23 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 24 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 25 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0; Для графа 25G алгоритм знайшов 25( ) 10G = , якому відповідають 16 різних максимальних незалежних множин: set S[1] := 1 3 6 7 8 12 14 18 19 23; set S[2] := 1 3 6 7 8 12 15 23 24 25; set S[3] := 1 3 4 6 7 12 15 23 24 25; set S[4] := 1 3 6 7 8 12 15 19 23 25; set S[5] := 1 3 6 7 8 12 14 19 23 25; set S[6] := 1 3 6 7 8 12 14 18 23 24; set S[7] := 1 3 6 7 8 12 14 23 24 25; set S[8] := 1 3 6 7 8 14 19 20 23 25; set S[9] := 1 3 6 7 8 15 19 20 23 25; set S[10] := 1 3 4 6 7 12 15 18 23 24; set S[11] := 1 3 6 7 8 12 15 18 19 23; set S[12] := 1 3 6 7 8 12 15 18 23 24; set S[13] := 1 3 6 7 8 14 20 23 24 25; set S[14] := 1 3 4 6 7 12 15 18 19 23; set S[15] := 1 3 4 6 7 12 15 19 23 25; set S[16] := 1 3 6 7 8 15 20 23 24 25; і підтвердив, що сімнадцятої максимальної незалежної множини не існує. Крім підтримки формування прототипних складів згуртованих команд, запропоноване налаштування ал- горитму Візинга-Плесневича дозволяє також опрацювати обмеження традиційних методів календарно- ресурсного планування для спеціальних задач управління програмним проектом. Задача 2. Оптимізація розкладу автономного тестування компонентів повторного використання в складі критичної програмної системи. Нехай програмна система є результатом збірки 2n  незалежних компонентів повторного використання 1,..., nc c . Кожний з компонент має тестуватися на 1k спеціалізованих стендах або каркасах автономного тестування kss ,...,1 впродовж деякої одиниці часу проекту (дня, тижня тощо) 1m тестерами mtt ,...,1 . При цьому одночасне тестування кількох компонентів на одному стенді є неможливим, і для кожного тестера jt визначено множину ,},...,1,,...,1),,({ === kuniscoO uij (11) операцій тестування компонента ic на стенді us , які він може виконувати згідно зі своїми рольовими повнова- женнями. Необхідно скласти розклад тестування з мінімальним терміном. Для розв’язання задачі побудуємо граф з множинами вершин  kuniscoV ui ,...,1,,...,1),,( === та ребер VVE  , де ребра поєднують вершини, відповідні операціям, сумісне виконання яких в одну одиницю часу неможливе згідно з (11): , які він може виконувати згідно зі своїми рольовими повноваженнями. Необхідно скласти розклад тестування з мінімальним терміном. Для розв’язання задачі побудуємо граф з множинами вершин Методи і засоби програмної інженерії 5 4,8,12,20 14 4,11,15,21 23 2,10,11,16 6 2,10,17,22 15 2,11,14 24 2,9,19,22 7 9,13 16 4,10,11,18,20,23 25 10,16,18 8 4,5,21 17 3,6,13,19,22 9 7,13,19,24 18 16,20,25 Для AMPL-коду вершини графу 25G задаються як: set V_G := {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25}; а матриця суміжності I_G має вигляд: param I_G: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 := 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 3 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 4 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 0 0 5 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 6 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 7 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 9 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 10 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 11 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 12 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 13 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 14 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 15 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 17 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 19 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 20 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 21 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 22 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 23 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 24 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 25 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0; Для графа 25G алгоритм знайшов 25( ) 10G = , якому відповідають 16 різних максимальних незалежних множин: set S[1] := 1 3 6 7 8 12 14 18 19 23; set S[2] := 1 3 6 7 8 12 15 23 24 25; set S[3] := 1 3 4 6 7 12 15 23 24 25; set S[4] := 1 3 6 7 8 12 15 19 23 25; set S[5] := 1 3 6 7 8 12 14 19 23 25; set S[6] := 1 3 6 7 8 12 14 18 23 24; set S[7] := 1 3 6 7 8 12 14 23 24 25; set S[8] := 1 3 6 7 8 14 19 20 23 25; set S[9] := 1 3 6 7 8 15 19 20 23 25; set S[10] := 1 3 4 6 7 12 15 18 23 24; set S[11] := 1 3 6 7 8 12 15 18 19 23; set S[12] := 1 3 6 7 8 12 15 18 23 24; set S[13] := 1 3 6 7 8 14 20 23 24 25; set S[14] := 1 3 4 6 7 12 15 18 19 23; set S[15] := 1 3 4 6 7 12 15 19 23 25; set S[16] := 1 3 6 7 8 15 20 23 24 25; і підтвердив, що сімнадцятої максимальної незалежної множини не існує. Крім підтримки формування прототипних складів згуртованих команд, запропоноване налаштування ал- горитму Візинга-Плесневича дозволяє також опрацювати обмеження традиційних методів календарно- ресурсного планування для спеціальних задач управління програмним проектом. Задача 2. Оптимізація розкладу автономного тестування компонентів повторного використання в складі критичної програмної системи. Нехай програмна система є результатом збірки 2n  незалежних компонентів повторного використання 1,..., nc c . Кожний з компонент має тестуватися на 1k спеціалізованих стендах або каркасах автономного тестування kss ,...,1 впродовж деякої одиниці часу проекту (дня, тижня тощо) 1m тестерами mtt ,...,1 . При цьому одночасне тестування кількох компонентів на одному стенді є неможливим, і для кожного тестера jt визначено множину ,},...,1,,...,1),,({ === kuniscoO uij (11) операцій тестування компонента ic на стенді us , які він може виконувати згідно зі своїми рольовими повнова- женнями. Необхідно скласти розклад тестування з мінімальним терміном. Для розв’язання задачі побудуємо граф з множинами вершин  kuniscoV ui ,...,1,,...,1),,( === та ребер VVE  , де ребра поєднують вершини, відповідні операціям, сумісне виконання яких в одну одиницю часу неможливе згідно з (11): та ре- бер Методи і засоби програмної інженерії 5 4,8,12,20 14 4,11,15,21 23 2,10,11,16 6 2,10,17,22 15 2,11,14 24 2,9,19,22 7 9,13 16 4,10,11,18,20,23 25 10,16,18 8 4,5,21 17 3,6,13,19,22 9 7,13,19,24 18 16,20,25 Для AMPL-коду вершини графу 25G задаються як: set V_G := {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25}; а матриця суміжності I_G має вигляд: param I_G: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 := 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 3 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 4 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 0 0 5 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 6 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 7 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 9 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 10 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 11 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 12 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 13 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 14 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 15 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 17 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 19 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 20 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 21 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 22 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 23 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 24 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 25 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0; Для графа 25G алгоритм знайшов 25( ) 10G = , якому відповідають 16 різних максимальних незалежних множин: set S[1] := 1 3 6 7 8 12 14 18 19 23; set S[2] := 1 3 6 7 8 12 15 23 24 25; set S[3] := 1 3 4 6 7 12 15 23 24 25; set S[4] := 1 3 6 7 8 12 15 19 23 25; set S[5] := 1 3 6 7 8 12 14 19 23 25; set S[6] := 1 3 6 7 8 12 14 18 23 24; set S[7] := 1 3 6 7 8 12 14 23 24 25; set S[8] := 1 3 6 7 8 14 19 20 23 25; set S[9] := 1 3 6 7 8 15 19 20 23 25; set S[10] := 1 3 4 6 7 12 15 18 23 24; set S[11] := 1 3 6 7 8 12 15 18 19 23; set S[12] := 1 3 6 7 8 12 15 18 23 24; set S[13] := 1 3 6 7 8 14 20 23 24 25; set S[14] := 1 3 4 6 7 12 15 18 19 23; set S[15] := 1 3 4 6 7 12 15 19 23 25; set S[16] := 1 3 6 7 8 15 20 23 24 25; і підтвердив, що сімнадцятої максимальної незалежної множини не існує. Крім підтримки формування прототипних складів згуртованих команд, запропоноване налаштування ал- горитму Візинга-Плесневича дозволяє також опрацювати обмеження традиційних методів календарно- ресурсного планування для спеціальних задач управління програмним проектом. Задача 2. Оптимізація розкладу автономного тестування компонентів повторного використання в складі критичної програмної системи. Нехай програмна система є результатом збірки 2n  незалежних компонентів повторного використання 1,..., nc c . Кожний з компонент має тестуватися на 1k спеціалізованих стендах або каркасах автономного тестування kss ,...,1 впродовж деякої одиниці часу проекту (дня, тижня тощо) 1m тестерами mtt ,...,1 . При цьому одночасне тестування кількох компонентів на одному стенді є неможливим, і для кожного тестера jt визначено множину ,},...,1,,...,1),,({ === kuniscoO uij (11) операцій тестування компонента ic на стенді us , які він може виконувати згідно зі своїми рольовими повнова- женнями. Необхідно скласти розклад тестування з мінімальним терміном. Для розв’язання задачі побудуємо граф з множинами вершин  kuniscoV ui ,...,1,,...,1),,( === та ребер VVE  , де ребра поєднують вершини, відповідні операціям, сумісне виконання яких в одну одиницю часу неможливе згідно з (11): , де ребра поєднують вершини, відповідні операціям, сумісне виконання яких в одну одиницю часу неможливе згідно з (11): [Введите текст] Методи і засоби програмної інженерії [Введите текст] ).),(,),(()!),(,),(( |1,(!)()!())),(),,((( jvjjuijvjjui vjui OscoOscoOscoOsco mjjvujiEscosco  == (12) Після мінімального правильного розфарбування графу за допомогою алгоритму Візинга-Плесневича з урахуванням співвідношення (12) отримане хроматичне число h визначатиме тривалість тестування. Підмно- жини вершин, розфарбованих одним кольором hl ,...,1= відповідають операціям тестування, виконуваним у програмному проекті. Поставлена задача зберігає значущість і для автономного тестування компонентів на різних каркасах (jUnit, jBehave, Qt, Google Test тощо). Приклад 1. Нехай 4; 2; 3n k m= = = і тестер 1t тестує компоненти 41, cc , а тестери 2 3, t t – компоненти ., 32 cc Побудова графу з вершинами–операціями ),( ui sco і застосування до нього алгоритму Візинга- Плесневича дозволяє отримати розфарбований граф з хроматичним числом 4, наведений на рис. 2 (операції, що мають виконуватися впродовж l -ї одиниці часу проекту, позначено відповідно білим і чорним кольорами, сі- рими крапками та сірим штрихуванням). o(c1,s1) o(c1,s2) o(c3,s1) o(c4,s1) o(c2,s1) o(c2,s2) o(c4,s2) o(c3,s2) 1 1 2 2 3 34 4 Рисунок 2. Граф для побудови розкладу тестування, розфарбований фарбами 1-4 Отриманий розклад тестування подано в табл. 3. Таблиця 3 – Розклад автономного тестування компонентів програмної системи Одиниця часу Стенд (або каркас) 1 Стенд (або каркас) 2 1 Перший компонент Третій компонент 2 Третій компонент Перший компонент 3 Четвертий компонент Другий компонент 4 Другий компонент Четвертий компонент Задача 3. Формування ядер незалежних команд у критичному програмному проекті. Визначити мінімальну кількість та склад ядер згуртованих підкоманд для незалежного розроблення вер- сій модулів критичної програмної системи, члени яких повинні мати досвід успішної спільної роботи, на підс- таві матриці сумісності фахівців-кандидатів ndd ,...,1 :3,|||| ,...,1, = = ndD njiij ,1=ijd якщо досвід наявний; ,0=ijd якщо він відсутній. Для розв’язання задачі побудуємо граф з множинами вершин  nidV i ,...,1, == та ребер VVE  , де ребра поєднують фахівців без досвіду успішної спільної роботи: 0)),(( = ijji dEdd . Після мінімального правильного розфарбування графу за розглянутим алгоритмом Візинга-Плесневича отримане хроматичне число h визначатиме кількість формованих ядер підгруп (термін “ядро” застосовується тут тому, що серед фахівців- кандидатів ndd ,...,1 можуть бути відсутні носії необхідних функціональних компетенцій, яких у цьому випадку необхідно добирати додатково). Самі ж ці ядра являтимуть собою підмножини вершин, розфарбованих одним кольором hl ,...,1= . Сформульована задача потребує розв’язання також і в ситуаціях формування мінімальної кількості згур- тованих команд для виконання портфелю проектів, подібних між собою за призначенням. Приклад 2. Нехай 10n = і в матриці сумісності D 14 17 18 25 26 39 310 47 48 56 78 910, , , , , , , , , , , 1,d d d d d d d d d d d d = а решта елементів нульові. Побудова графу з вершинами-фахівцями id і застосування до нього алгоритму Візин- га дозволяє отримати розфарбований граф з хроматичним числом 3, наведений на рис. 3 (вершини, приналежні до складу трьох формованих ядер, позначені відповідно чорним і білим кольорами та штрихуванням). (12) Після мінімального правильного розфарбування графу за допомогою алгоритму Візинга-Плесневича з урахуванням співвідношення (12) отримане хроматичне число h визначатиме тривалість тестування. Підмножини вершин, розфарбованих одним кольором [Введите текст] Методи і засоби програмної інженерії [Введите текст] ).),(,),(()!),(,),(( |1,(!)()!())),(),,((( jvjjuijvjjui vjui OscoOscoOscoOsco mjjvujiEscosco  == (12) Після мінімального правильного розфарбування графу за допомогою алгоритму Візинга-Плесневича з урахуванням співвідношення (12) отримане хроматичне число h визначатиме тривалість тестування. Підмно- жини вершин, розфарбованих одним кольором hl ,...,1= відповідають операціям тестування, виконуваним у програмному проекті. Поставлена задача зберігає значущість і для автономного тестування компонентів на різних каркасах (jUnit, jBehave, Qt, Google Test тощо). Приклад 1. Нехай 4; 2; 3n k m= = = і тестер 1t тестує компоненти 41, cc , а тестери 2 3, t t – компоненти ., 32 cc Побудова графу з вершинами–операціями ),( ui sco і застосування до нього алгоритму Візинга- Плесневича дозволяє отримати розфарбований граф з хроматичним числом 4, наведений на рис. 2 (операції, що мають виконуватися впродовж l -ї одиниці часу проекту, позначено відповідно білим і чорним кольорами, сі- рими крапками та сірим штрихуванням). o(c1,s1) o(c1,s2) o(c3,s1) o(c4,s1) o(c2,s1) o(c2,s2) o(c4,s2) o(c3,s2) 1 1 2 2 3 34 4 Рисунок 2. Граф для побудови розкладу тестування, розфарбований фарбами 1-4 Отриманий розклад тестування подано в табл. 3. Таблиця 3 – Розклад автономного тестування компонентів програмної системи Одиниця часу Стенд (або каркас) 1 Стенд (або каркас) 2 1 Перший компонент Третій компонент 2 Третій компонент Перший компонент 3 Четвертий компонент Другий компонент 4 Другий компонент Четвертий компонент Задача 3. Формування ядер незалежних команд у критичному програмному проекті. Визначити мінімальну кількість та склад ядер згуртованих підкоманд для незалежного розроблення вер- сій модулів критичної програмної системи, члени яких повинні мати досвід успішної спільної роботи, на підс- таві матриці сумісності фахівців-кандидатів ndd ,...,1 :3,|||| ,...,1, = = ndD njiij ,1=ijd якщо досвід наявний; ,0=ijd якщо він відсутній. Для розв’язання задачі побудуємо граф з множинами вершин  nidV i ,...,1, == та ребер VVE  , де ребра поєднують фахівців без досвіду успішної спільної роботи: 0)),(( = ijji dEdd . Після мінімального правильного розфарбування графу за розглянутим алгоритмом Візинга-Плесневича отримане хроматичне число h визначатиме кількість формованих ядер підгруп (термін “ядро” застосовується тут тому, що серед фахівців- кандидатів ndd ,...,1 можуть бути відсутні носії необхідних функціональних компетенцій, яких у цьому випадку необхідно добирати додатково). Самі ж ці ядра являтимуть собою підмножини вершин, розфарбованих одним кольором hl ,...,1= . Сформульована задача потребує розв’язання також і в ситуаціях формування мінімальної кількості згур- тованих команд для виконання портфелю проектів, подібних між собою за призначенням. Приклад 2. Нехай 10n = і в матриці сумісності D 14 17 18 25 26 39 310 47 48 56 78 910, , , , , , , , , , , 1,d d d d d d d d d d d d = а решта елементів нульові. Побудова графу з вершинами-фахівцями id і застосування до нього алгоритму Візин- га дозволяє отримати розфарбований граф з хроматичним числом 3, наведений на рис. 3 (вершини, приналежні до складу трьох формованих ядер, позначені відповідно чорним і білим кольорами та штрихуванням). відповідають операціям тестування, виконува- ним у програмному проекті. Поставлена задача зберігає значущість і для автономного тестування компонентів на різних каркасах (jUnit, jBehave, Qt, Google Test тощо). Приклад 1. Нехай [Введите текст] Методи і засоби програмної інженерії [Введите текст] ).),(,),(()!),(,),(( |1,(!)()!())),(),,((( jvjjuijvjjui vjui OscoOscoOscoOsco mjjvujiEscosco  == (12) Після мінімального правильного розфарбування графу за допомогою алгоритму Візинга-Плесневича з урахуванням співвідношення (12) отримане хроматичне число h визначатиме тривалість тестування. Підмно- жини вершин, розфарбованих одним кольором hl ,...,1= відповідають операціям тестування, виконуваним у програмному проекті. Поставлена задача зберігає значущість і для автономного тестування компонентів на різних каркасах (jUnit, jBehave, Qt, Google Test тощо). Приклад 1. Нехай 4; 2; 3n k m= = = і тестер 1t тестує компоненти 41, cc , а тестери 2 3, t t – компоненти ., 32 cc Побудова графу з вершинами–операціями ),( ui sco і застосування до нього алгоритму Візинга- Плесневича дозволяє отримати розфарбований граф з хроматичним числом 4, наведений на рис. 2 (операції, що мають виконуватися впродовж l -ї одиниці часу проекту, позначено відповідно білим і чорним кольорами, сі- рими крапками та сірим штрихуванням). o(c1,s1) o(c1,s2) o(c3,s1) o(c4,s1) o(c2,s1) o(c2,s2) o(c4,s2) o(c3,s2) 1 1 2 2 3 34 4 Рисунок 2. Граф для побудови розкладу тестування, розфарбований фарбами 1-4 Отриманий розклад тестування подано в табл. 3. Таблиця 3 – Розклад автономного тестування компонентів програмної системи Одиниця часу Стенд (або каркас) 1 Стенд (або каркас) 2 1 Перший компонент Третій компонент 2 Третій компонент Перший компонент 3 Четвертий компонент Другий компонент 4 Другий компонент Четвертий компонент Задача 3. Формування ядер незалежних команд у критичному програмному проекті. Визначити мінімальну кількість та склад ядер згуртованих підкоманд для незалежного розроблення вер- сій модулів критичної програмної системи, члени яких повинні мати досвід успішної спільної роботи, на підс- таві матриці сумісності фахівців-кандидатів ndd ,...,1 :3,|||| ,...,1, = = ndD njiij ,1=ijd якщо досвід наявний; ,0=ijd якщо він відсутній. Для розв’язання задачі побудуємо граф з множинами вершин  nidV i ,...,1, == та ребер VVE  , де ребра поєднують фахівців без досвіду успішної спільної роботи: 0)),(( = ijji dEdd . Після мінімального правильного розфарбування графу за розглянутим алгоритмом Візинга-Плесневича отримане хроматичне число h визначатиме кількість формованих ядер підгруп (термін “ядро” застосовується тут тому, що серед фахівців- кандидатів ndd ,...,1 можуть бути відсутні носії необхідних функціональних компетенцій, яких у цьому випадку необхідно добирати додатково). Самі ж ці ядра являтимуть собою підмножини вершин, розфарбованих одним кольором hl ,...,1= . Сформульована задача потребує розв’язання також і в ситуаціях формування мінімальної кількості згур- тованих команд для виконання портфелю проектів, подібних між собою за призначенням. Приклад 2. Нехай 10n = і в матриці сумісності D 14 17 18 25 26 39 310 47 48 56 78 910, , , , , , , , , , , 1,d d d d d d d d d d d d = а решта елементів нульові. Побудова графу з вершинами-фахівцями id і застосування до нього алгоритму Візин- га дозволяє отримати розфарбований граф з хроматичним числом 3, наведений на рис. 3 (вершини, приналежні до складу трьох формованих ядер, позначені відповідно чорним і білим кольорами та штрихуванням). і тестер [Введите текст] Методи і засоби програмної інженерії [Введите текст] ).),(,),(()!),(,),(( |1,(!)()!())),(),,((( jvjjuijvjjui vjui OscoOscoOscoOsco mjjvujiEscosco  == (12) Після мінімального правильного розфарбування графу за допомогою алгоритму Візинга-Плесневича з урахуванням співвідношення (12) отримане хроматичне число h визначатиме тривалість тестування. Підмно- жини вершин, розфарбованих одним кольором hl ,...,1= відповідають операціям тестування, виконуваним у програмному проекті. Поставлена задача зберігає значущість і для автономного тестування компонентів на різних каркасах (jUnit, jBehave, Qt, Google Test тощо). Приклад 1. Нехай 4; 2; 3n k m= = = і тестер 1t тестує компоненти 41, cc , а тестери 2 3, t t – компоненти ., 32 cc Побудова графу з вершинами–операціями ),( ui sco і застосування до нього алгоритму Візинга- Плесневича дозволяє отримати розфарбований граф з хроматичним числом 4, наведений на рис. 2 (операції, що мають виконуватися впродовж l -ї одиниці часу проекту, позначено відповідно білим і чорним кольорами, сі- рими крапками та сірим штрихуванням). o(c1,s1) o(c1,s2) o(c3,s1) o(c4,s1) o(c2,s1) o(c2,s2) o(c4,s2) o(c3,s2) 1 1 2 2 3 34 4 Рисунок 2. Граф для побудови розкладу тестування, розфарбований фарбами 1-4 Отриманий розклад тестування подано в табл. 3. Таблиця 3 – Розклад автономного тестування компонентів програмної системи Одиниця часу Стенд (або каркас) 1 Стенд (або каркас) 2 1 Перший компонент Третій компонент 2 Третій компонент Перший компонент 3 Четвертий компонент Другий компонент 4 Другий компонент Четвертий компонент Задача 3. Формування ядер незалежних команд у критичному програмному проекті. Визначити мінімальну кількість та склад ядер згуртованих підкоманд для незалежного розроблення вер- сій модулів критичної програмної системи, члени яких повинні мати досвід успішної спільної роботи, на підс- таві матриці сумісності фахівців-кандидатів ndd ,...,1 :3,|||| ,...,1, = = ndD njiij ,1=ijd якщо досвід наявний; ,0=ijd якщо він відсутній. Для розв’язання задачі побудуємо граф з множинами вершин  nidV i ,...,1, == та ребер VVE  , де ребра поєднують фахівців без досвіду успішної спільної роботи: 0)),(( = ijji dEdd . Після мінімального правильного розфарбування графу за розглянутим алгоритмом Візинга-Плесневича отримане хроматичне число h визначатиме кількість формованих ядер підгруп (термін “ядро” застосовується тут тому, що серед фахівців- кандидатів ndd ,...,1 можуть бути відсутні носії необхідних функціональних компетенцій, яких у цьому випадку необхідно добирати додатково). Самі ж ці ядра являтимуть собою підмножини вершин, розфарбованих одним кольором hl ,...,1= . Сформульована задача потребує розв’язання також і в ситуаціях формування мінімальної кількості згур- тованих команд для виконання портфелю проектів, подібних між собою за призначенням. Приклад 2. Нехай 10n = і в матриці сумісності D 14 17 18 25 26 39 310 47 48 56 78 910, , , , , , , , , , , 1,d d d d d d d d d d d d = а решта елементів нульові. Побудова графу з вершинами-фахівцями id і застосування до нього алгоритму Візин- га дозволяє отримати розфарбований граф з хроматичним числом 3, наведений на рис. 3 (вершини, приналежні до складу трьох формованих ядер, позначені відповідно чорним і білим кольорами та штрихуванням). тестує компоненти [Введите текст] Методи і засоби програмної інженерії [Введите текст] ).),(,),(()!),(,),(( |1,(!)()!())),(),,((( jvjjuijvjjui vjui OscoOscoOscoOsco mjjvujiEscosco  == (12) Після мінімального правильного розфарбування графу за допомогою алгоритму Візинга-Плесневича з урахуванням співвідношення (12) отримане хроматичне число h визначатиме тривалість тестування. Підмно- жини вершин, розфарбованих одним кольором hl ,...,1= відповідають операціям тестування, виконуваним у програмному проекті. Поставлена задача зберігає значущість і для автономного тестування компонентів на різних каркасах (jUnit, jBehave, Qt, Google Test тощо). Приклад 1. Нехай 4; 2; 3n k m= = = і тестер 1t тестує компоненти 41, cc , а тестери 2 3, t t – компоненти ., 32 cc Побудова графу з вершинами–операціями ),( ui sco і застосування до нього алгоритму Візинга- Плесневича дозволяє отримати розфарбований граф з хроматичним числом 4, наведений на рис. 2 (операції, що мають виконуватися впродовж l -ї одиниці часу проекту, позначено відповідно білим і чорним кольорами, сі- рими крапками та сірим штрихуванням). o(c1,s1) o(c1,s2) o(c3,s1) o(c4,s1) o(c2,s1) o(c2,s2) o(c4,s2) o(c3,s2) 1 1 2 2 3 34 4 Рисунок 2. Граф для побудови розкладу тестування, розфарбований фарбами 1-4 Отриманий розклад тестування подано в табл. 3. Таблиця 3 – Розклад автономного тестування компонентів програмної системи Одиниця часу Стенд (або каркас) 1 Стенд (або каркас) 2 1 Перший компонент Третій компонент 2 Третій компонент Перший компонент 3 Четвертий компонент Другий компонент 4 Другий компонент Четвертий компонент Задача 3. Формування ядер незалежних команд у критичному програмному проекті. Визначити мінімальну кількість та склад ядер згуртованих підкоманд для незалежного розроблення вер- сій модулів критичної програмної системи, члени яких повинні мати досвід успішної спільної роботи, на підс- таві матриці сумісності фахівців-кандидатів ndd ,...,1 :3,|||| ,...,1, = = ndD njiij ,1=ijd якщо досвід наявний; ,0=ijd якщо він відсутній. Для розв’язання задачі побудуємо граф з множинами вершин  nidV i ,...,1, == та ребер VVE  , де ребра поєднують фахівців без досвіду успішної спільної роботи: 0)),(( = ijji dEdd . Після мінімального правильного розфарбування графу за розглянутим алгоритмом Візинга-Плесневича отримане хроматичне число h визначатиме кількість формованих ядер підгруп (термін “ядро” застосовується тут тому, що серед фахівців- кандидатів ndd ,...,1 можуть бути відсутні носії необхідних функціональних компетенцій, яких у цьому випадку необхідно добирати додатково). Самі ж ці ядра являтимуть собою підмножини вершин, розфарбованих одним кольором hl ,...,1= . Сформульована задача потребує розв’язання також і в ситуаціях формування мінімальної кількості згур- тованих команд для виконання портфелю проектів, подібних між собою за призначенням. Приклад 2. Нехай 10n = і в матриці сумісності D 14 17 18 25 26 39 310 47 48 56 78 910, , , , , , , , , , , 1,d d d d d d d d d d d d = а решта елементів нульові. Побудова графу з вершинами-фахівцями id і застосування до нього алгоритму Візин- га дозволяє отримати розфарбований граф з хроматичним числом 3, наведений на рис. 3 (вершини, приналежні до складу трьох формованих ядер, позначені відповідно чорним і білим кольорами та штрихуванням). , а тестери [Введите текст] Методи і засоби програмної інженерії [Введите текст] ).),(,),(()!),(,),(( |1,(!)()!())),(),,((( jvjjuijvjjui vjui OscoOscoOscoOsco mjjvujiEscosco  == (12) Після мінімального правильного розфарбування графу за допомогою алгоритму Візинга-Плесневича з урахуванням співвідношення (12) отримане хроматичне число h визначатиме тривалість тестування. Підмно- жини вершин, розфарбованих одним кольором hl ,...,1= відповідають операціям тестування, виконуваним у програмному проекті. Поставлена задача зберігає значущість і для автономного тестування компонентів на різних каркасах (jUnit, jBehave, Qt, Google Test тощо). Приклад 1. Нехай 4; 2; 3n k m= = = і тестер 1t тестує компоненти 41, cc , а тестери 2 3, t t – компоненти ., 32 cc Побудова графу з вершинами–операціями ),( ui sco і застосування до нього алгоритму Візинга- Плесневича дозволяє отримати розфарбований граф з хроматичним числом 4, наведений на рис. 2 (операції, що мають виконуватися впродовж l -ї одиниці часу проекту, позначено відповідно білим і чорним кольорами, сі- рими крапками та сірим штрихуванням). o(c1,s1) o(c1,s2) o(c3,s1) o(c4,s1) o(c2,s1) o(c2,s2) o(c4,s2) o(c3,s2) 1 1 2 2 3 34 4 Рисунок 2. Граф для побудови розкладу тестування, розфарбований фарбами 1-4 Отриманий розклад тестування подано в табл. 3. Таблиця 3 – Розклад автономного тестування компонентів програмної системи Одиниця часу Стенд (або каркас) 1 Стенд (або каркас) 2 1 Перший компонент Третій компонент 2 Третій компонент Перший компонент 3 Четвертий компонент Другий компонент 4 Другий компонент Четвертий компонент Задача 3. Формування ядер незалежних команд у критичному програмному проекті. Визначити мінімальну кількість та склад ядер згуртованих підкоманд для незалежного розроблення вер- сій модулів критичної програмної системи, члени яких повинні мати досвід успішної спільної роботи, на підс- таві матриці сумісності фахівців-кандидатів ndd ,...,1 :3,|||| ,...,1, = = ndD njiij ,1=ijd якщо досвід наявний; ,0=ijd якщо він відсутній. Для розв’язання задачі побудуємо граф з множинами вершин  nidV i ,...,1, == та ребер VVE  , де ребра поєднують фахівців без досвіду успішної спільної роботи: 0)),(( = ijji dEdd . Після мінімального правильного розфарбування графу за розглянутим алгоритмом Візинга-Плесневича отримане хроматичне число h визначатиме кількість формованих ядер підгруп (термін “ядро” застосовується тут тому, що серед фахівців- кандидатів ndd ,...,1 можуть бути відсутні носії необхідних функціональних компетенцій, яких у цьому випадку необхідно добирати додатково). Самі ж ці ядра являтимуть собою підмножини вершин, розфарбованих одним кольором hl ,...,1= . Сформульована задача потребує розв’язання також і в ситуаціях формування мінімальної кількості згур- тованих команд для виконання портфелю проектів, подібних між собою за призначенням. Приклад 2. Нехай 10n = і в матриці сумісності D 14 17 18 25 26 39 310 47 48 56 78 910, , , , , , , , , , , 1,d d d d d d d d d d d d = а решта елементів нульові. Побудова графу з вершинами-фахівцями id і застосування до нього алгоритму Візин- га дозволяє отримати розфарбований граф з хроматичним числом 3, наведений на рис. 3 (вершини, приналежні до складу трьох формованих ядер, позначені відповідно чорним і білим кольорами та штрихуванням). – ком- поненти [Введите текст] Методи і засоби програмної інженерії [Введите текст] ).),(,),(()!),(,),(( |1,(!)()!())),(),,((( jvjjuijvjjui vjui OscoOscoOscoOsco mjjvujiEscosco  == (12) Після мінімального правильного розфарбування графу за допомогою алгоритму Візинга-Плесневича з урахуванням співвідношення (12) отримане хроматичне число h визначатиме тривалість тестування. Підмно- жини вершин, розфарбованих одним кольором hl ,...,1= відповідають операціям тестування, виконуваним у програмному проекті. Поставлена задача зберігає значущість і для автономного тестування компонентів на різних каркасах (jUnit, jBehave, Qt, Google Test тощо). Приклад 1. Нехай 4; 2; 3n k m= = = і тестер 1t тестує компоненти 41, cc , а тестери 2 3, t t – компоненти ., 32 cc Побудова графу з вершинами–операціями ),( ui sco і застосування до нього алгоритму Візинга- Плесневича дозволяє отримати розфарбований граф з хроматичним числом 4, наведений на рис. 2 (операції, що мають виконуватися впродовж l -ї одиниці часу проекту, позначено відповідно білим і чорним кольорами, сі- рими крапками та сірим штрихуванням). o(c1,s1) o(c1,s2) o(c3,s1) o(c4,s1) o(c2,s1) o(c2,s2) o(c4,s2) o(c3,s2) 1 1 2 2 3 34 4 Рисунок 2. Граф для побудови розкладу тестування, розфарбований фарбами 1-4 Отриманий розклад тестування подано в табл. 3. Таблиця 3 – Розклад автономного тестування компонентів програмної системи Одиниця часу Стенд (або каркас) 1 Стенд (або каркас) 2 1 Перший компонент Третій компонент 2 Третій компонент Перший компонент 3 Четвертий компонент Другий компонент 4 Другий компонент Четвертий компонент Задача 3. Формування ядер незалежних команд у критичному програмному проекті. Визначити мінімальну кількість та склад ядер згуртованих підкоманд для незалежного розроблення вер- сій модулів критичної програмної системи, члени яких повинні мати досвід успішної спільної роботи, на підс- таві матриці сумісності фахівців-кандидатів ndd ,...,1 :3,|||| ,...,1, = = ndD njiij ,1=ijd якщо досвід наявний; ,0=ijd якщо він відсутній. Для розв’язання задачі побудуємо граф з множинами вершин  nidV i ,...,1, == та ребер VVE  , де ребра поєднують фахівців без досвіду успішної спільної роботи: 0)),(( = ijji dEdd . Після мінімального правильного розфарбування графу за розглянутим алгоритмом Візинга-Плесневича отримане хроматичне число h визначатиме кількість формованих ядер підгруп (термін “ядро” застосовується тут тому, що серед фахівців- кандидатів ndd ,...,1 можуть бути відсутні носії необхідних функціональних компетенцій, яких у цьому випадку необхідно добирати додатково). Самі ж ці ядра являтимуть собою підмножини вершин, розфарбованих одним кольором hl ,...,1= . Сформульована задача потребує розв’язання також і в ситуаціях формування мінімальної кількості згур- тованих команд для виконання портфелю проектів, подібних між собою за призначенням. Приклад 2. Нехай 10n = і в матриці сумісності D 14 17 18 25 26 39 310 47 48 56 78 910, , , , , , , , , , , 1,d d d d d d d d d d d d = а решта елементів нульові. Побудова графу з вершинами-фахівцями id і застосування до нього алгоритму Візин- га дозволяє отримати розфарбований граф з хроматичним числом 3, наведений на рис. 3 (вершини, приналежні до складу трьох формованих ядер, позначені відповідно чорним і білим кольорами та штрихуванням). Побудова графу з вершинами–операціями [Введите текст] Методи і засоби програмної інженерії [Введите текст] ).),(,),(()!),(,),(( |1,(!)()!())),(),,((( jvjjuijvjjui vjui OscoOscoOscoOsco mjjvujiEscosco  == (12) Після мінімального правильного розфарбування графу за допомогою алгоритму Візинга-Плесневича з урахуванням співвідношення (12) отримане хроматичне число h визначатиме тривалість тестування. Підмно- жини вершин, розфарбованих одним кольором hl ,...,1= відповідають операціям тестування, виконуваним у програмному проекті. Поставлена задача зберігає значущість і для автономного тестування компонентів на різних каркасах (jUnit, jBehave, Qt, Google Test тощо). Приклад 1. Нехай 4; 2; 3n k m= = = і тестер 1t тестує компоненти 41, cc , а тестери 2 3, t t – компоненти ., 32 cc Побудова графу з вершинами–операціями ),( ui sco і застосування до нього алгоритму Візинга- Плесневича дозволяє отримати розфарбований граф з хроматичним числом 4, наведений на рис. 2 (операції, що мають виконуватися впродовж l -ї одиниці часу проекту, позначено відповідно білим і чорним кольорами, сі- рими крапками та сірим штрихуванням). o(c1,s1) o(c1,s2) o(c3,s1) o(c4,s1) o(c2,s1) o(c2,s2) o(c4,s2) o(c3,s2) 1 1 2 2 3 34 4 Рисунок 2. Граф для побудови розкладу тестування, розфарбований фарбами 1-4 Отриманий розклад тестування подано в табл. 3. Таблиця 3 – Розклад автономного тестування компонентів програмної системи Одиниця часу Стенд (або каркас) 1 Стенд (або каркас) 2 1 Перший компонент Третій компонент 2 Третій компонент Перший компонент 3 Четвертий компонент Другий компонент 4 Другий компонент Четвертий компонент Задача 3. Формування ядер незалежних команд у критичному програмному проекті. Визначити мінімальну кількість та склад ядер згуртованих підкоманд для незалежного розроблення вер- сій модулів критичної програмної системи, члени яких повинні мати досвід успішної спільної роботи, на підс- таві матриці сумісності фахівців-кандидатів ndd ,...,1 :3,|||| ,...,1, = = ndD njiij ,1=ijd якщо досвід наявний; ,0=ijd якщо він відсутній. Для розв’язання задачі побудуємо граф з множинами вершин  nidV i ,...,1, == та ребер VVE  , де ребра поєднують фахівців без досвіду успішної спільної роботи: 0)),(( = ijji dEdd . Після мінімального правильного розфарбування графу за розглянутим алгоритмом Візинга-Плесневича отримане хроматичне число h визначатиме кількість формованих ядер підгруп (термін “ядро” застосовується тут тому, що серед фахівців- кандидатів ndd ,...,1 можуть бути відсутні носії необхідних функціональних компетенцій, яких у цьому випадку необхідно добирати додатково). Самі ж ці ядра являтимуть собою підмножини вершин, розфарбованих одним кольором hl ,...,1= . Сформульована задача потребує розв’язання також і в ситуаціях формування мінімальної кількості згур- тованих команд для виконання портфелю проектів, подібних між собою за призначенням. Приклад 2. Нехай 10n = і в матриці сумісності D 14 17 18 25 26 39 310 47 48 56 78 910, , , , , , , , , , , 1,d d d d d d d d d d d d = а решта елементів нульові. Побудова графу з вершинами-фахівцями id і застосування до нього алгоритму Візин- га дозволяє отримати розфарбований граф з хроматичним числом 3, наведений на рис. 3 (вершини, приналежні до складу трьох формованих ядер, позначені відповідно чорним і білим кольорами та штрихуванням). і застосування до нього алгоритму Візинга-Плесневича дозволяє отримати розфарбований граф з хроматичним числом 4, наведений на рис. 2 (операції, що мають виконуватися впродовж l-ї одиниці часу проекту, позначено відповідно білим і чорним кольорами, сірими крапками та сірим штрихуванням). [Введите текст] Методи і засоби програмної інженерії [Введите текст] ).),(,),(()!),(,),(( |1,(!)()!())),(),,((( jvjjuijvjjui vjui OscoOscoOscoOsco mjjvujiEscosco  == (12) Після мінімального правильного розфарбування графу за допомогою алгоритму Візинга-Плесневича з урахуванням співвідношення (12) отримане хроматичне число h визначатиме тривалість тестування. Підмно- жини вершин, розфарбованих одним кольором hl ,...,1= відповідають операціям тестування, виконуваним у програмному проекті. Поставлена задача зберігає значущість і для автономного тестування компонентів на різних каркасах (jUnit, jBehave, Qt, Google Test тощо). Приклад 1. Нехай 4; 2; 3n k m= = = і тестер 1t тестує компоненти 41, cc , а тестери 2 3, t t – компоненти ., 32 cc Побудова графу з вершинами–операціями ),( ui sco і застосування до нього алгоритму Візинга- Плесневича дозволяє отримати розфарбований граф з хроматичним числом 4, наведений на рис. 2 (операції, що мають виконуватися впродовж l -ї одиниці часу проекту, позначено відповідно білим і чорним кольорами, сі- рими крапками та сірим штрихуванням). o(c1,s1) o(c1,s2) o(c3,s1) o(c4,s1) o(c2,s1) o(c2,s2) o(c4,s2) o(c3,s2) 1 1 2 2 3 34 4 Рисунок 2. Граф для побудови розкладу тестування, розфарбований фарбами 1-4 Отриманий розклад тестування подано в табл. 3. Таблиця 3 – Розклад автономного тестування компонентів програмної системи Одиниця часу Стенд (або каркас) 1 Стенд (або каркас) 2 1 Перший компонент Третій компонент 2 Третій компонент Перший компонент 3 Четвертий компонент Другий компонент 4 Другий компонент Четвертий компонент Задача 3. Формування ядер незалежних команд у критичному програмному проекті. Визначити мінімальну кількість та склад ядер згуртованих підкоманд для незалежного розроблення вер- сій модулів критичної програмної системи, члени яких повинні мати досвід успішної спільної роботи, на підс- таві матриці сумісності фахівців-кандидатів ndd ,...,1 :3,|||| ,...,1, = = ndD njiij ,1=ijd якщо досвід наявний; ,0=ijd якщо він відсутній. Для розв’язання задачі побудуємо граф з множинами вершин  nidV i ,...,1, == та ребер VVE  , де ребра поєднують фахівців без досвіду успішної спільної роботи: 0)),(( = ijji dEdd . Після мінімального правильного розфарбування графу за розглянутим алгоритмом Візинга-Плесневича отримане хроматичне число h визначатиме кількість формованих ядер підгруп (термін “ядро” застосовується тут тому, що серед фахівців- кандидатів ndd ,...,1 можуть бути відсутні носії необхідних функціональних компетенцій, яких у цьому випадку необхідно добирати додатково). Самі ж ці ядра являтимуть собою підмножини вершин, розфарбованих одним кольором hl ,...,1= . Сформульована задача потребує розв’язання також і в ситуаціях формування мінімальної кількості згур- тованих команд для виконання портфелю проектів, подібних між собою за призначенням. Приклад 2. Нехай 10n = і в матриці сумісності D 14 17 18 25 26 39 310 47 48 56 78 910, , , , , , , , , , , 1,d d d d d d d d d d d d = а решта елементів нульові. Побудова графу з вершинами-фахівцями id і застосування до нього алгоритму Візин- га дозволяє отримати розфарбований граф з хроматичним числом 3, наведений на рис. 3 (вершини, приналежні до складу трьох формованих ядер, позначені відповідно чорним і білим кольорами та штрихуванням). Рисунок 2. Граф для побудови розкладу тестування, розфарбований фарбами 1-4 Отриманий розклад тестування подано в табл. 3. Таблиця 3. Розклад автономного тестування компонентів програмної системи Одиниця часу Стенд (або каркас) 1 Стенд (або каркас) 2 1 Перший компонент Третій компонент 2 Третій компонент Перший компонент 3 Четвертий компонент Другий компонент 4 Другий компонент Четвертий компонент 82 Методи і засоби програмної інженерії Задача 3. Формування ядер незалежних команд у критичному програмному проекті. Визначити мінімальну кількість та склад ядер згуртованих підкоманд для незалежного розро- блення версій модулів критичної програмної системи, члени яких повинні мати досвід успішної спільної роботи, на підставі матриці сумісності фахівців-кандидатів [Введите текст] Методи і засоби програмної інженерії [Введите текст] ).),(,),(()!),(,),(( |1,(!)()!())),(),,((( jvjjuijvjjui vjui OscoOscoOscoOsco mjjvujiEscosco  == (12) Після мінімального правильного розфарбування графу за допомогою алгоритму Візинга-Плесневича з урахуванням співвідношення (12) отримане хроматичне число h визначатиме тривалість тестування. Підмно- жини вершин, розфарбованих одним кольором hl ,...,1= відповідають операціям тестування, виконуваним у програмному проекті. Поставлена задача зберігає значущість і для автономного тестування компонентів на різних каркасах (jUnit, jBehave, Qt, Google Test тощо). Приклад 1. Нехай 4; 2; 3n k m= = = і тестер 1t тестує компоненти 41, cc , а тестери 2 3, t t – компоненти ., 32 cc Побудова графу з вершинами–операціями ),( ui sco і застосування до нього алгоритму Візинга- Плесневича дозволяє отримати розфарбований граф з хроматичним числом 4, наведений на рис. 2 (операції, що мають виконуватися впродовж l -ї одиниці часу проекту, позначено відповідно білим і чорним кольорами, сі- рими крапками та сірим штрихуванням). o(c1,s1) o(c1,s2) o(c3,s1) o(c4,s1) o(c2,s1) o(c2,s2) o(c4,s2) o(c3,s2) 1 1 2 2 3 34 4 Рисунок 2. Граф для побудови розкладу тестування, розфарбований фарбами 1-4 Отриманий розклад тестування подано в табл. 3. Таблиця 3 – Розклад автономного тестування компонентів програмної системи Одиниця часу Стенд (або каркас) 1 Стенд (або каркас) 2 1 Перший компонент Третій компонент 2 Третій компонент Перший компонент 3 Четвертий компонент Другий компонент 4 Другий компонент Четвертий компонент Задача 3. Формування ядер незалежних команд у критичному програмному проекті. Визначити мінімальну кількість та склад ядер згуртованих підкоманд для незалежного розроблення вер- сій модулів критичної програмної системи, члени яких повинні мати досвід успішної спільної роботи, на підс- таві матриці сумісності фахівців-кандидатів ndd ,...,1 :3,|||| ,...,1, = = ndD njiij ,1=ijd якщо досвід наявний; ,0=ijd якщо він відсутній. Для розв’язання задачі побудуємо граф з множинами вершин  nidV i ,...,1, == та ребер VVE  , де ребра поєднують фахівців без досвіду успішної спільної роботи: 0)),(( = ijji dEdd . Після мінімального правильного розфарбування графу за розглянутим алгоритмом Візинга-Плесневича отримане хроматичне число h визначатиме кількість формованих ядер підгруп (термін “ядро” застосовується тут тому, що серед фахівців- кандидатів ndd ,...,1 можуть бути відсутні носії необхідних функціональних компетенцій, яких у цьому випадку необхідно добирати додатково). Самі ж ці ядра являтимуть собою підмножини вершин, розфарбованих одним кольором hl ,...,1= . Сформульована задача потребує розв’язання також і в ситуаціях формування мінімальної кількості згур- тованих команд для виконання портфелю проектів, подібних між собою за призначенням. Приклад 2. Нехай 10n = і в матриці сумісності D 14 17 18 25 26 39 310 47 48 56 78 910, , , , , , , , , , , 1,d d d d d d d d d d d d = а решта елементів нульові. Побудова графу з вершинами-фахівцями id і застосування до нього алгоритму Візин- га дозволяє отримати розфарбований граф з хроматичним числом 3, наведений на рис. 3 (вершини, приналежні до складу трьох формованих ядер, позначені відповідно чорним і білим кольорами та штрихуванням). якщо досвід наявний; [Введите текст] Методи і засоби програмної інженерії [Введите текст] ).),(,),(()!),(,),(( |1,(!)()!())),(),,((( jvjjuijvjjui vjui OscoOscoOscoOsco mjjvujiEscosco  == (12) Після мінімального правильного розфарбування графу за допомогою алгоритму Візинга-Плесневича з урахуванням співвідношення (12) отримане хроматичне число h визначатиме тривалість тестування. Підмно- жини вершин, розфарбованих одним кольором hl ,...,1= відповідають операціям тестування, виконуваним у програмному проекті. Поставлена задача зберігає значущість і для автономного тестування компонентів на різних каркасах (jUnit, jBehave, Qt, Google Test тощо). Приклад 1. Нехай 4; 2; 3n k m= = = і тестер 1t тестує компоненти 41, cc , а тестери 2 3, t t – компоненти ., 32 cc Побудова графу з вершинами–операціями ),( ui sco і застосування до нього алгоритму Візинга- Плесневича дозволяє отримати розфарбований граф з хроматичним числом 4, наведений на рис. 2 (операції, що мають виконуватися впродовж l -ї одиниці часу проекту, позначено відповідно білим і чорним кольорами, сі- рими крапками та сірим штрихуванням). o(c1,s1) o(c1,s2) o(c3,s1) o(c4,s1) o(c2,s1) o(c2,s2) o(c4,s2) o(c3,s2) 1 1 2 2 3 34 4 Рисунок 2. Граф для побудови розкладу тестування, розфарбований фарбами 1-4 Отриманий розклад тестування подано в табл. 3. Таблиця 3 – Розклад автономного тестування компонентів програмної системи Одиниця часу Стенд (або каркас) 1 Стенд (або каркас) 2 1 Перший компонент Третій компонент 2 Третій компонент Перший компонент 3 Четвертий компонент Другий компонент 4 Другий компонент Четвертий компонент Задача 3. Формування ядер незалежних команд у критичному програмному проекті. Визначити мінімальну кількість та склад ядер згуртованих підкоманд для незалежного розроблення вер- сій модулів критичної програмної системи, члени яких повинні мати досвід успішної спільної роботи, на підс- таві матриці сумісності фахівців-кандидатів ndd ,...,1 :3,|||| ,...,1, = = ndD njiij ,1=ijd якщо досвід наявний; ,0=ijd якщо він відсутній. Для розв’язання задачі побудуємо граф з множинами вершин  nidV i ,...,1, == та ребер VVE  , де ребра поєднують фахівців без досвіду успішної спільної роботи: 0)),(( = ijji dEdd . Після мінімального правильного розфарбування графу за розглянутим алгоритмом Візинга-Плесневича отримане хроматичне число h визначатиме кількість формованих ядер підгруп (термін “ядро” застосовується тут тому, що серед фахівців- кандидатів ndd ,...,1 можуть бути відсутні носії необхідних функціональних компетенцій, яких у цьому випадку необхідно добирати додатково). Самі ж ці ядра являтимуть собою підмножини вершин, розфарбованих одним кольором hl ,...,1= . Сформульована задача потребує розв’язання також і в ситуаціях формування мінімальної кількості згур- тованих команд для виконання портфелю проектів, подібних між собою за призначенням. Приклад 2. Нехай 10n = і в матриці сумісності D 14 17 18 25 26 39 310 47 48 56 78 910, , , , , , , , , , , 1,d d d d d d d d d d d d = а решта елементів нульові. Побудова графу з вершинами-фахівцями id і застосування до нього алгоритму Візин- га дозволяє отримати розфарбований граф з хроматичним числом 3, наведений на рис. 3 (вершини, приналежні до складу трьох формованих ядер, позначені відповідно чорним і білим кольорами та штрихуванням). якщо він відсутній. Для розв’язання задачі побудуємо граф з множинами вершин [Введите текст] Методи і засоби програмної інженерії [Введите текст] ).),(,),(()!),(,),(( |1,(!)()!())),(),,((( jvjjuijvjjui vjui OscoOscoOscoOsco mjjvujiEscosco  == (12) Після мінімального правильного розфарбування графу за допомогою алгоритму Візинга-Плесневича з урахуванням співвідношення (12) отримане хроматичне число h визначатиме тривалість тестування. Підмно- жини вершин, розфарбованих одним кольором hl ,...,1= відповідають операціям тестування, виконуваним у програмному проекті. Поставлена задача зберігає значущість і для автономного тестування компонентів на різних каркасах (jUnit, jBehave, Qt, Google Test тощо). Приклад 1. Нехай 4; 2; 3n k m= = = і тестер 1t тестує компоненти 41, cc , а тестери 2 3, t t – компоненти ., 32 cc Побудова графу з вершинами–операціями ),( ui sco і застосування до нього алгоритму Візинга- Плесневича дозволяє отримати розфарбований граф з хроматичним числом 4, наведений на рис. 2 (операції, що мають виконуватися впродовж l -ї одиниці часу проекту, позначено відповідно білим і чорним кольорами, сі- рими крапками та сірим штрихуванням). o(c1,s1) o(c1,s2) o(c3,s1) o(c4,s1) o(c2,s1) o(c2,s2) o(c4,s2) o(c3,s2) 1 1 2 2 3 34 4 Рисунок 2. Граф для побудови розкладу тестування, розфарбований фарбами 1-4 Отриманий розклад тестування подано в табл. 3. Таблиця 3 – Розклад автономного тестування компонентів програмної системи Одиниця часу Стенд (або каркас) 1 Стенд (або каркас) 2 1 Перший компонент Третій компонент 2 Третій компонент Перший компонент 3 Четвертий компонент Другий компонент 4 Другий компонент Четвертий компонент Задача 3. Формування ядер незалежних команд у критичному програмному проекті. Визначити мінімальну кількість та склад ядер згуртованих підкоманд для незалежного розроблення вер- сій модулів критичної програмної системи, члени яких повинні мати досвід успішної спільної роботи, на підс- таві матриці сумісності фахівців-кандидатів ndd ,...,1 :3,|||| ,...,1, = = ndD njiij ,1=ijd якщо досвід наявний; ,0=ijd якщо він відсутній. Для розв’язання задачі побудуємо граф з множинами вершин  nidV i ,...,1, == та ребер VVE  , де ребра поєднують фахівців без досвіду успішної спільної роботи: 0)),(( = ijji dEdd . Після мінімального правильного розфарбування графу за розглянутим алгоритмом Візинга-Плесневича отримане хроматичне число h визначатиме кількість формованих ядер підгруп (термін “ядро” застосовується тут тому, що серед фахівців- кандидатів ndd ,...,1 можуть бути відсутні носії необхідних функціональних компетенцій, яких у цьому випадку необхідно добирати додатково). Самі ж ці ядра являтимуть собою підмножини вершин, розфарбованих одним кольором hl ,...,1= . Сформульована задача потребує розв’язання також і в ситуаціях формування мінімальної кількості згур- тованих команд для виконання портфелю проектів, подібних між собою за призначенням. Приклад 2. Нехай 10n = і в матриці сумісності D 14 17 18 25 26 39 310 47 48 56 78 910, , , , , , , , , , , 1,d d d d d d d d d d d d = а решта елементів нульові. Побудова графу з вершинами-фахівцями id і застосування до нього алгоритму Візин- га дозволяє отримати розфарбований граф з хроматичним числом 3, наведений на рис. 3 (вершини, приналежні до складу трьох формованих ядер, позначені відповідно чорним і білим кольорами та штрихуванням). та ребер [Введите текст] Методи і засоби програмної інженерії [Введите текст] ).),(,),(()!),(,),(( |1,(!)()!())),(),,((( jvjjuijvjjui vjui OscoOscoOscoOsco mjjvujiEscosco  == (12) Після мінімального правильного розфарбування графу за допомогою алгоритму Візинга-Плесневича з урахуванням співвідношення (12) отримане хроматичне число h визначатиме тривалість тестування. Підмно- жини вершин, розфарбованих одним кольором hl ,...,1= відповідають операціям тестування, виконуваним у програмному проекті. Поставлена задача зберігає значущість і для автономного тестування компонентів на різних каркасах (jUnit, jBehave, Qt, Google Test тощо). Приклад 1. Нехай 4; 2; 3n k m= = = і тестер 1t тестує компоненти 41, cc , а тестери 2 3, t t – компоненти ., 32 cc Побудова графу з вершинами–операціями ),( ui sco і застосування до нього алгоритму Візинга- Плесневича дозволяє отримати розфарбований граф з хроматичним числом 4, наведений на рис. 2 (операції, що мають виконуватися впродовж l -ї одиниці часу проекту, позначено відповідно білим і чорним кольорами, сі- рими крапками та сірим штрихуванням). o(c1,s1) o(c1,s2) o(c3,s1) o(c4,s1) o(c2,s1) o(c2,s2) o(c4,s2) o(c3,s2) 1 1 2 2 3 34 4 Рисунок 2. Граф для побудови розкладу тестування, розфарбований фарбами 1-4 Отриманий розклад тестування подано в табл. 3. Таблиця 3 – Розклад автономного тестування компонентів програмної системи Одиниця часу Стенд (або каркас) 1 Стенд (або каркас) 2 1 Перший компонент Третій компонент 2 Третій компонент Перший компонент 3 Четвертий компонент Другий компонент 4 Другий компонент Четвертий компонент Задача 3. Формування ядер незалежних команд у критичному програмному проекті. Визначити мінімальну кількість та склад ядер згуртованих підкоманд для незалежного розроблення вер- сій модулів критичної програмної системи, члени яких повинні мати досвід успішної спільної роботи, на підс- таві матриці сумісності фахівців-кандидатів ndd ,...,1 :3,|||| ,...,1, = = ndD njiij ,1=ijd якщо досвід наявний; ,0=ijd якщо він відсутній. Для розв’язання задачі побудуємо граф з множинами вершин  nidV i ,...,1, == та ребер VVE  , де ребра поєднують фахівців без досвіду успішної спільної роботи: 0)),(( = ijji dEdd . Після мінімального правильного розфарбування графу за розглянутим алгоритмом Візинга-Плесневича отримане хроматичне число h визначатиме кількість формованих ядер підгруп (термін “ядро” застосовується тут тому, що серед фахівців- кандидатів ndd ,...,1 можуть бути відсутні носії необхідних функціональних компетенцій, яких у цьому випадку необхідно добирати додатково). Самі ж ці ядра являтимуть собою підмножини вершин, розфарбованих одним кольором hl ,...,1= . Сформульована задача потребує розв’язання також і в ситуаціях формування мінімальної кількості згур- тованих команд для виконання портфелю проектів, подібних між собою за призначенням. Приклад 2. Нехай 10n = і в матриці сумісності D 14 17 18 25 26 39 310 47 48 56 78 910, , , , , , , , , , , 1,d d d d d d d d d d d d = а решта елементів нульові. Побудова графу з вершинами-фахівцями id і застосування до нього алгоритму Візин- га дозволяє отримати розфарбований граф з хроматичним числом 3, наведений на рис. 3 (вершини, приналежні до складу трьох формованих ядер, позначені відповідно чорним і білим кольорами та штрихуванням). , де ребра поєднують фахівців без досвіду успішної спільної роботи: [Введите текст] Методи і засоби програмної інженерії [Введите текст] ).),(,),(()!),(,),(( |1,(!)()!())),(),,((( jvjjuijvjjui vjui OscoOscoOscoOsco mjjvujiEscosco  == (12) Після мінімального правильного розфарбування графу за допомогою алгоритму Візинга-Плесневича з урахуванням співвідношення (12) отримане хроматичне число h визначатиме тривалість тестування. Підмно- жини вершин, розфарбованих одним кольором hl ,...,1= відповідають операціям тестування, виконуваним у програмному проекті. Поставлена задача зберігає значущість і для автономного тестування компонентів на різних каркасах (jUnit, jBehave, Qt, Google Test тощо). Приклад 1. Нехай 4; 2; 3n k m= = = і тестер 1t тестує компоненти 41, cc , а тестери 2 3, t t – компоненти ., 32 cc Побудова графу з вершинами–операціями ),( ui sco і застосування до нього алгоритму Візинга- Плесневича дозволяє отримати розфарбований граф з хроматичним числом 4, наведений на рис. 2 (операції, що мають виконуватися впродовж l -ї одиниці часу проекту, позначено відповідно білим і чорним кольорами, сі- рими крапками та сірим штрихуванням). o(c1,s1) o(c1,s2) o(c3,s1) o(c4,s1) o(c2,s1) o(c2,s2) o(c4,s2) o(c3,s2) 1 1 2 2 3 34 4 Рисунок 2. Граф для побудови розкладу тестування, розфарбований фарбами 1-4 Отриманий розклад тестування подано в табл. 3. Таблиця 3 – Розклад автономного тестування компонентів програмної системи Одиниця часу Стенд (або каркас) 1 Стенд (або каркас) 2 1 Перший компонент Третій компонент 2 Третій компонент Перший компонент 3 Четвертий компонент Другий компонент 4 Другий компонент Четвертий компонент Задача 3. Формування ядер незалежних команд у критичному програмному проекті. Визначити мінімальну кількість та склад ядер згуртованих підкоманд для незалежного розроблення вер- сій модулів критичної програмної системи, члени яких повинні мати досвід успішної спільної роботи, на підс- таві матриці сумісності фахівців-кандидатів ndd ,...,1 :3,|||| ,...,1, = = ndD njiij ,1=ijd якщо досвід наявний; ,0=ijd якщо він відсутній. Для розв’язання задачі побудуємо граф з множинами вершин  nidV i ,...,1, == та ребер VVE  , де ребра поєднують фахівців без досвіду успішної спільної роботи: 0)),(( = ijji dEdd . Після мінімального правильного розфарбування графу за розглянутим алгоритмом Візинга-Плесневича отримане хроматичне число h визначатиме кількість формованих ядер підгруп (термін “ядро” застосовується тут тому, що серед фахівців- кандидатів ndd ,...,1 можуть бути відсутні носії необхідних функціональних компетенцій, яких у цьому випадку необхідно добирати додатково). Самі ж ці ядра являтимуть собою підмножини вершин, розфарбованих одним кольором hl ,...,1= . Сформульована задача потребує розв’язання також і в ситуаціях формування мінімальної кількості згур- тованих команд для виконання портфелю проектів, подібних між собою за призначенням. Приклад 2. Нехай 10n = і в матриці сумісності D 14 17 18 25 26 39 310 47 48 56 78 910, , , , , , , , , , , 1,d d d d d d d d d d d d = а решта елементів нульові. Побудова графу з вершинами-фахівцями id і застосування до нього алгоритму Візин- га дозволяє отримати розфарбований граф з хроматичним числом 3, наведений на рис. 3 (вершини, приналежні до складу трьох формованих ядер, позначені відповідно чорним і білим кольорами та штрихуванням). . Після мінімаль- ного правильного розфарбування графу за розглянутим алгоритмом Візинга-Плесневича отримане хроматичне число визначатиме кількість формованих ядер підгруп (термін “ядро” застосовується тут тому, що серед фа- хівців-кандидатів [Введите текст] Методи і засоби програмної інженерії [Введите текст] ).),(,),(()!),(,),(( |1,(!)()!())),(),,((( jvjjuijvjjui vjui OscoOscoOscoOsco mjjvujiEscosco  == (12) Після мінімального правильного розфарбування графу за допомогою алгоритму Візинга-Плесневича з урахуванням співвідношення (12) отримане хроматичне число h визначатиме тривалість тестування. Підмно- жини вершин, розфарбованих одним кольором hl ,...,1= відповідають операціям тестування, виконуваним у програмному проекті. Поставлена задача зберігає значущість і для автономного тестування компонентів на різних каркасах (jUnit, jBehave, Qt, Google Test тощо). Приклад 1. Нехай 4; 2; 3n k m= = = і тестер 1t тестує компоненти 41, cc , а тестери 2 3, t t – компоненти ., 32 cc Побудова графу з вершинами–операціями ),( ui sco і застосування до нього алгоритму Візинга- Плесневича дозволяє отримати розфарбований граф з хроматичним числом 4, наведений на рис. 2 (операції, що мають виконуватися впродовж l -ї одиниці часу проекту, позначено відповідно білим і чорним кольорами, сі- рими крапками та сірим штрихуванням). o(c1,s1) o(c1,s2) o(c3,s1) o(c4,s1) o(c2,s1) o(c2,s2) o(c4,s2) o(c3,s2) 1 1 2 2 3 34 4 Рисунок 2. Граф для побудови розкладу тестування, розфарбований фарбами 1-4 Отриманий розклад тестування подано в табл. 3. Таблиця 3 – Розклад автономного тестування компонентів програмної системи Одиниця часу Стенд (або каркас) 1 Стенд (або каркас) 2 1 Перший компонент Третій компонент 2 Третій компонент Перший компонент 3 Четвертий компонент Другий компонент 4 Другий компонент Четвертий компонент Задача 3. Формування ядер незалежних команд у критичному програмному проекті. Визначити мінімальну кількість та склад ядер згуртованих підкоманд для незалежного розроблення вер- сій модулів критичної програмної системи, члени яких повинні мати досвід успішної спільної роботи, на підс- таві матриці сумісності фахівців-кандидатів ndd ,...,1 :3,|||| ,...,1, = = ndD njiij ,1=ijd якщо досвід наявний; ,0=ijd якщо він відсутній. Для розв’язання задачі побудуємо граф з множинами вершин  nidV i ,...,1, == та ребер VVE  , де ребра поєднують фахівців без досвіду успішної спільної роботи: 0)),(( = ijji dEdd . Після мінімального правильного розфарбування графу за розглянутим алгоритмом Візинга-Плесневича отримане хроматичне число h визначатиме кількість формованих ядер підгруп (термін “ядро” застосовується тут тому, що серед фахівців- кандидатів ndd ,...,1 можуть бути відсутні носії необхідних функціональних компетенцій, яких у цьому випадку необхідно добирати додатково). Самі ж ці ядра являтимуть собою підмножини вершин, розфарбованих одним кольором hl ,...,1= . Сформульована задача потребує розв’язання також і в ситуаціях формування мінімальної кількості згур- тованих команд для виконання портфелю проектів, подібних між собою за призначенням. Приклад 2. Нехай 10n = і в матриці сумісності D 14 17 18 25 26 39 310 47 48 56 78 910, , , , , , , , , , , 1,d d d d d d d d d d d d = а решта елементів нульові. Побудова графу з вершинами-фахівцями id і застосування до нього алгоритму Візин- га дозволяє отримати розфарбований граф з хроматичним числом 3, наведений на рис. 3 (вершини, приналежні до складу трьох формованих ядер, позначені відповідно чорним і білим кольорами та штрихуванням). можуть бути відсутні носії необхідних функціональних компетенцій, яких у цьому випадку необхідно добирати додатково). Самі ж ці ядра являтимуть собою підмножини вершин, розфарбованих одним кольором [Введите текст] Методи і засоби програмної інженерії [Введите текст] ).),(,),(()!),(,),(( |1,(!)()!())),(),,((( jvjjuijvjjui vjui OscoOscoOscoOsco mjjvujiEscosco  == (12) Після мінімального правильного розфарбування графу за допомогою алгоритму Візинга-Плесневича з урахуванням співвідношення (12) отримане хроматичне число h визначатиме тривалість тестування. Підмно- жини вершин, розфарбованих одним кольором hl ,...,1= відповідають операціям тестування, виконуваним у програмному проекті. Поставлена задача зберігає значущість і для автономного тестування компонентів на різних каркасах (jUnit, jBehave, Qt, Google Test тощо). Приклад 1. Нехай 4; 2; 3n k m= = = і тестер 1t тестує компоненти 41, cc , а тестери 2 3, t t – компоненти ., 32 cc Побудова графу з вершинами–операціями ),( ui sco і застосування до нього алгоритму Візинга- Плесневича дозволяє отримати розфарбований граф з хроматичним числом 4, наведений на рис. 2 (операції, що мають виконуватися впродовж l -ї одиниці часу проекту, позначено відповідно білим і чорним кольорами, сі- рими крапками та сірим штрихуванням). o(c1,s1) o(c1,s2) o(c3,s1) o(c4,s1) o(c2,s1) o(c2,s2) o(c4,s2) o(c3,s2) 1 1 2 2 3 34 4 Рисунок 2. Граф для побудови розкладу тестування, розфарбований фарбами 1-4 Отриманий розклад тестування подано в табл. 3. Таблиця 3 – Розклад автономного тестування компонентів програмної системи Одиниця часу Стенд (або каркас) 1 Стенд (або каркас) 2 1 Перший компонент Третій компонент 2 Третій компонент Перший компонент 3 Четвертий компонент Другий компонент 4 Другий компонент Четвертий компонент Задача 3. Формування ядер незалежних команд у критичному програмному проекті. Визначити мінімальну кількість та склад ядер згуртованих підкоманд для незалежного розроблення вер- сій модулів критичної програмної системи, члени яких повинні мати досвід успішної спільної роботи, на підс- таві матриці сумісності фахівців-кандидатів ndd ,...,1 :3,|||| ,...,1, = = ndD njiij ,1=ijd якщо досвід наявний; ,0=ijd якщо він відсутній. Для розв’язання задачі побудуємо граф з множинами вершин  nidV i ,...,1, == та ребер VVE  , де ребра поєднують фахівців без досвіду успішної спільної роботи: 0)),(( = ijji dEdd . Після мінімального правильного розфарбування графу за розглянутим алгоритмом Візинга-Плесневича отримане хроматичне число h визначатиме кількість формованих ядер підгруп (термін “ядро” застосовується тут тому, що серед фахівців- кандидатів ndd ,...,1 можуть бути відсутні носії необхідних функціональних компетенцій, яких у цьому випадку необхідно добирати додатково). Самі ж ці ядра являтимуть собою підмножини вершин, розфарбованих одним кольором hl ,...,1= . Сформульована задача потребує розв’язання також і в ситуаціях формування мінімальної кількості згур- тованих команд для виконання портфелю проектів, подібних між собою за призначенням. Приклад 2. Нехай 10n = і в матриці сумісності D 14 17 18 25 26 39 310 47 48 56 78 910, , , , , , , , , , , 1,d d d d d d d d d d d d = а решта елементів нульові. Побудова графу з вершинами-фахівцями id і застосування до нього алгоритму Візин- га дозволяє отримати розфарбований граф з хроматичним числом 3, наведений на рис. 3 (вершини, приналежні до складу трьох формованих ядер, позначені відповідно чорним і білим кольорами та штрихуванням). . Сформульована задача потребує розв’язання також і в ситуаціях формування мінімальної кількості згуртованих команд для виконання портфелю проектів, подібних між собою за призначенням. Приклад 2. Нехай [Введите текст] Методи і засоби програмної інженерії [Введите текст] ).),(,),(()!),(,),(( |1,(!)()!())),(),,((( jvjjuijvjjui vjui OscoOscoOscoOsco mjjvujiEscosco  == (12) Після мінімального правильного розфарбування графу за допомогою алгоритму Візинга-Плесневича з урахуванням співвідношення (12) отримане хроматичне число h визначатиме тривалість тестування. Підмно- жини вершин, розфарбованих одним кольором hl ,...,1= відповідають операціям тестування, виконуваним у програмному проекті. Поставлена задача зберігає значущість і для автономного тестування компонентів на різних каркасах (jUnit, jBehave, Qt, Google Test тощо). Приклад 1. Нехай 4; 2; 3n k m= = = і тестер 1t тестує компоненти 41, cc , а тестери 2 3, t t – компоненти ., 32 cc Побудова графу з вершинами–операціями ),( ui sco і застосування до нього алгоритму Візинга- Плесневича дозволяє отримати розфарбований граф з хроматичним числом 4, наведений на рис. 2 (операції, що мають виконуватися впродовж l -ї одиниці часу проекту, позначено відповідно білим і чорним кольорами, сі- рими крапками та сірим штрихуванням). o(c1,s1) o(c1,s2) o(c3,s1) o(c4,s1) o(c2,s1) o(c2,s2) o(c4,s2) o(c3,s2) 1 1 2 2 3 34 4 Рисунок 2. Граф для побудови розкладу тестування, розфарбований фарбами 1-4 Отриманий розклад тестування подано в табл. 3. Таблиця 3 – Розклад автономного тестування компонентів програмної системи Одиниця часу Стенд (або каркас) 1 Стенд (або каркас) 2 1 Перший компонент Третій компонент 2 Третій компонент Перший компонент 3 Четвертий компонент Другий компонент 4 Другий компонент Четвертий компонент Задача 3. Формування ядер незалежних команд у критичному програмному проекті. Визначити мінімальну кількість та склад ядер згуртованих підкоманд для незалежного розроблення вер- сій модулів критичної програмної системи, члени яких повинні мати досвід успішної спільної роботи, на підс- таві матриці сумісності фахівців-кандидатів ndd ,...,1 :3,|||| ,...,1, = = ndD njiij ,1=ijd якщо досвід наявний; ,0=ijd якщо він відсутній. Для розв’язання задачі побудуємо граф з множинами вершин  nidV i ,...,1, == та ребер VVE  , де ребра поєднують фахівців без досвіду успішної спільної роботи: 0)),(( = ijji dEdd . Після мінімального правильного розфарбування графу за розглянутим алгоритмом Візинга-Плесневича отримане хроматичне число h визначатиме кількість формованих ядер підгруп (термін “ядро” застосовується тут тому, що серед фахівців- кандидатів ndd ,...,1 можуть бути відсутні носії необхідних функціональних компетенцій, яких у цьому випадку необхідно добирати додатково). Самі ж ці ядра являтимуть собою підмножини вершин, розфарбованих одним кольором hl ,...,1= . Сформульована задача потребує розв’язання також і в ситуаціях формування мінімальної кількості згур- тованих команд для виконання портфелю проектів, подібних між собою за призначенням. Приклад 2. Нехай 10n = і в матриці сумісності D 14 17 18 25 26 39 310 47 48 56 78 910, , , , , , , , , , , 1,d d d d d d d d d d d d = а решта елементів нульові. Побудова графу з вершинами-фахівцями id і застосування до нього алгоритму Візин- га дозволяє отримати розфарбований граф з хроматичним числом 3, наведений на рис. 3 (вершини, приналежні до складу трьох формованих ядер, позначені відповідно чорним і білим кольорами та штрихуванням). і в матриці сумісності [Введите текст] Методи і засоби програмної інженерії [Введите текст] ).),(,),(()!),(,),(( |1,(!)()!())),(),,((( jvjjuijvjjui vjui OscoOscoOscoOsco mjjvujiEscosco  == (12) Після мінімального правильного розфарбування графу за допомогою алгоритму Візинга-Плесневича з урахуванням співвідношення (12) отримане хроматичне число h визначатиме тривалість тестування. Підмно- жини вершин, розфарбованих одним кольором hl ,...,1= відповідають операціям тестування, виконуваним у програмному проекті. Поставлена задача зберігає значущість і для автономного тестування компонентів на різних каркасах (jUnit, jBehave, Qt, Google Test тощо). Приклад 1. Нехай 4; 2; 3n k m= = = і тестер 1t тестує компоненти 41, cc , а тестери 2 3, t t – компоненти ., 32 cc Побудова графу з вершинами–операціями ),( ui sco і застосування до нього алгоритму Візинга- Плесневича дозволяє отримати розфарбований граф з хроматичним числом 4, наведений на рис. 2 (операції, що мають виконуватися впродовж l -ї одиниці часу проекту, позначено відповідно білим і чорним кольорами, сі- рими крапками та сірим штрихуванням). o(c1,s1) o(c1,s2) o(c3,s1) o(c4,s1) o(c2,s1) o(c2,s2) o(c4,s2) o(c3,s2) 1 1 2 2 3 34 4 Рисунок 2. Граф для побудови розкладу тестування, розфарбований фарбами 1-4 Отриманий розклад тестування подано в табл. 3. Таблиця 3 – Розклад автономного тестування компонентів програмної системи Одиниця часу Стенд (або каркас) 1 Стенд (або каркас) 2 1 Перший компонент Третій компонент 2 Третій компонент Перший компонент 3 Четвертий компонент Другий компонент 4 Другий компонент Четвертий компонент Задача 3. Формування ядер незалежних команд у критичному програмному проекті. Визначити мінімальну кількість та склад ядер згуртованих підкоманд для незалежного розроблення вер- сій модулів критичної програмної системи, члени яких повинні мати досвід успішної спільної роботи, на підс- таві матриці сумісності фахівців-кандидатів ndd ,...,1 :3,|||| ,...,1, = = ndD njiij ,1=ijd якщо досвід наявний; ,0=ijd якщо він відсутній. Для розв’язання задачі побудуємо граф з множинами вершин  nidV i ,...,1, == та ребер VVE  , де ребра поєднують фахівців без досвіду успішної спільної роботи: 0)),(( = ijji dEdd . Після мінімального правильного розфарбування графу за розглянутим алгоритмом Візинга-Плесневича отримане хроматичне число h визначатиме кількість формованих ядер підгруп (термін “ядро” застосовується тут тому, що серед фахівців- кандидатів ndd ,...,1 можуть бути відсутні носії необхідних функціональних компетенцій, яких у цьому випадку необхідно добирати додатково). Самі ж ці ядра являтимуть собою підмножини вершин, розфарбованих одним кольором hl ,...,1= . Сформульована задача потребує розв’язання також і в ситуаціях формування мінімальної кількості згур- тованих команд для виконання портфелю проектів, подібних між собою за призначенням. Приклад 2. Нехай 10n = і в матриці сумісності D 14 17 18 25 26 39 310 47 48 56 78 910, , , , , , , , , , , 1,d d d d d d d d d d d d = а решта елементів нульові. Побудова графу з вершинами-фахівцями id і застосування до нього алгоритму Візин- га дозволяє отримати розфарбований граф з хроматичним числом 3, наведений на рис. 3 (вершини, приналежні до складу трьох формованих ядер, позначені відповідно чорним і білим кольорами та штрихуванням). [Введите текст] Методи і засоби програмної інженерії [Введите текст] ).),(,),(()!),(,),(( |1,(!)()!())),(),,((( jvjjuijvjjui vjui OscoOscoOscoOsco mjjvujiEscosco  == (12) Після мінімального правильного розфарбування графу за допомогою алгоритму Візинга-Плесневича з урахуванням співвідношення (12) отримане хроматичне число h визначатиме тривалість тестування. Підмно- жини вершин, розфарбованих одним кольором hl ,...,1= відповідають операціям тестування, виконуваним у програмному проекті. Поставлена задача зберігає значущість і для автономного тестування компонентів на різних каркасах (jUnit, jBehave, Qt, Google Test тощо). Приклад 1. Нехай 4; 2; 3n k m= = = і тестер 1t тестує компоненти 41, cc , а тестери 2 3, t t – компоненти ., 32 cc Побудова графу з вершинами–операціями ),( ui sco і застосування до нього алгоритму Візинга- Плесневича дозволяє отримати розфарбований граф з хроматичним числом 4, наведений на рис. 2 (операції, що мають виконуватися впродовж l -ї одиниці часу проекту, позначено відповідно білим і чорним кольорами, сі- рими крапками та сірим штрихуванням). o(c1,s1) o(c1,s2) o(c3,s1) o(c4,s1) o(c2,s1) o(c2,s2) o(c4,s2) o(c3,s2) 1 1 2 2 3 34 4 Рисунок 2. Граф для побудови розкладу тестування, розфарбований фарбами 1-4 Отриманий розклад тестування подано в табл. 3. Таблиця 3 – Розклад автономного тестування компонентів програмної системи Одиниця часу Стенд (або каркас) 1 Стенд (або каркас) 2 1 Перший компонент Третій компонент 2 Третій компонент Перший компонент 3 Четвертий компонент Другий компонент 4 Другий компонент Четвертий компонент Задача 3. Формування ядер незалежних команд у критичному програмному проекті. Визначити мінімальну кількість та склад ядер згуртованих підкоманд для незалежного розроблення вер- сій модулів критичної програмної системи, члени яких повинні мати досвід успішної спільної роботи, на підс- таві матриці сумісності фахівців-кандидатів ndd ,...,1 :3,|||| ,...,1, = = ndD njiij ,1=ijd якщо досвід наявний; ,0=ijd якщо він відсутній. Для розв’язання задачі побудуємо граф з множинами вершин  nidV i ,...,1, == та ребер VVE  , де ребра поєднують фахівців без досвіду успішної спільної роботи: 0)),(( = ijji dEdd . Після мінімального правильного розфарбування графу за розглянутим алгоритмом Візинга-Плесневича отримане хроматичне число h визначатиме кількість формованих ядер підгруп (термін “ядро” застосовується тут тому, що серед фахівців- кандидатів ndd ,...,1 можуть бути відсутні носії необхідних функціональних компетенцій, яких у цьому випадку необхідно добирати додатково). Самі ж ці ядра являтимуть собою підмножини вершин, розфарбованих одним кольором hl ,...,1= . Сформульована задача потребує розв’язання також і в ситуаціях формування мінімальної кількості згур- тованих команд для виконання портфелю проектів, подібних між собою за призначенням. Приклад 2. Нехай 10n = і в матриці сумісності D 14 17 18 25 26 39 310 47 48 56 78 910, , , , , , , , , , , 1,d d d d d d d d d d d d = а решта елементів нульові. Побудова графу з вершинами-фахівцями id і застосування до нього алгоритму Візин- га дозволяє отримати розфарбований граф з хроматичним числом 3, наведений на рис. 3 (вершини, приналежні до складу трьох формованих ядер, позначені відповідно чорним і білим кольорами та штрихуванням). а решта елементів нульові. Побудова графу з вершинами-фахівцями di і застосування до ньо- го алгоритму Візинга дозволяє отримати розфарбований граф з хроматичним числом 3, наведений на рис. 3 (вершини, приналежні до складу трьох формованих ядер, позначені відповідно чорним і білим кольорами та штрихуванням). Методи і засоби програмної інженерії d1 d2 d3d4 d5 d6 d7 d8 d9 d10 1 1 1 1 2 2 23 3 3 Рисунок 3 – Граф для побудови ядер незалежних груп, розфарбований фарбами 1-3 Слід зазначити, що це – відомий граф Петерсена [12], широко застосовний в теорії графів у ролі демонстраційного прикладу. Відповідний йому склад ядер трьох незалежних груп має вигляд },,{};,,{};,,,{ 10933652287411 dddCdddCddddC === . Висновки Запропоновані постановки задач булевого лінійного програмування для знаходження незалежної множи- ни максимального розміру та заданої кількості попарно неперетинних незалежних множин, що мають максима- льний сумарний розмір, і відповідні їм AMPL-коди можуть бути використані для автоматизованого отримання розв’язків тих задач керування програмним проектом, розв’язання яких недостатньо регламентовано в руслі технологічно-описового підходу до керування ним. Це насамперед задачі формування найбільш згуртованої команди програмного проекту; визначення множини програмних проектів у портфелі, які (не) можна виконува- ти одночасно, формування та аналізу під-команд для складного розподіленого програмного проекту. Через слабку формалізованість та істотну невизначеність, властиві програмному проекту, отримані розв’язки стають для них (суб)-оптимальними прототип ними рішеннями, ситуативно налаштовними в руслі технологічного підходу, а ретроспектива процесу налаштування надає підстави для «зворотного» вдосконалення висхідних постановок оптимізаційних задач. Демонструючи перспективність вдосконалення програмного проекту за допомогою інструментарію дис- кретної оптимізації, наведені алгоритми висвітлюють доцільність узагальнення незалежної множини/кліки до так званих co-k-плексу/k-плексу, яке складає напрям подальших досліджень авторів. Однак навіть наведені AMPL-коди та програма-солвер gurobi можуть бути використані в навчальних ку- рсах з дисциплін «Управління програмними проектами» та «Оптимізаційні методи управління проектами» у вищих навчальних закладах України різних рівнів акредитації. Література 1. Стандарт з управління проектами та настанова до Зводу знань з управління проектами (Настанова PMBOK). Сьоме видання. Newton Square, Pennsylvanya: Project management Institute, Inc, 2021. – 370 c. [Електронний ресурс]. – Режим доступу: https://pmiukraine.org/wp- content/uploads/2022/08/PMBOK7_Ukr_ForPersonalUseOnly.pdf. 2. Баркалов С.А. Умное управление проектами: учебное пособие / С.А. Баркалов, В.Н. Бурков, Я.Д. Гельруд и др.; под ред. чл.-корр. РАН Д. А. Новикова. Челябинск: Издательский центр ЮУрГУ, 2019. – 189 с. 3. Стецюк П.І. Максимальні незалежні множини вершин графа та їх застосування в керуванні проектами / П.І.Стецюк , О.О.Слабоспицька, О.О.Ушакова // Пит. прикладної математики і математичного моделювання. Д.: РВВ ДНУ, 2016. – Вип. 16. – С. 151–162. 4. Кристофидес Н. Теория графов. Алгоритмический подход / Н.Кристофидес. ‒ M: Мир. 1978. ‒ 432 с. 5. Гэри М. Вычислительные машины и труднорешаемые задачи. / Гэри М., Джонсон Д. ‒ М.: Мир. 1982. ‒ 416 с. 6. Визинг В.Г. К проблеме минимальной раскраски вершин графа / В.Г.Визинг, Г.С.Плесневич // Сибирский математический журнал. – 1965. – Т.6. – № 1. – С. 234–236. 7. Стецюк П.И. Об ЛП-ориентированных верхних оценках для взвешенного числа устойчивости графа / П.И.Стецюк, А.П.Лиховид – Кибернетика и системный анализ. – 2009. – № 1. – C. 157–170. 8. Balansundaram B. Clique relaxations in social network analysis: the maximum k-plex problem / B.Balansundaram, S.Butenko, I.V.Hicks // Operations Research. – 2011. – V.59. – N 1. – P. 133–142. 9. Gurobi Optimization Inc.: Gurobi Optimizer Reference Manual.[Electronic resource]. – Mode of access: http://www.gurobi.com/documentation/ 10. Fourer R. AMPL, A Modeling Language for Mathematical Programming / R. Fourer, D. Gay, B. Kernighan. – Belmont: Duxburry Press, 2003. – 517 p. 11. AMPL for research [Electronic resource]. – Mode of access: https://ampl.com/. 12. Нікольський Ю.В. Дискретна математика / Ю.В. Нікольський, В.В. Пасічник, Ю.М. Щербина. – К.: Видавнича група BHV, 2007. – 368 с. References 1. A Guide to the Project Management Body of Knowledge (PMBOK Guide) – and the Standard for Project Management [7 ed.]. Newton Square, Pennsylvanya: Project management Institute, Inc, 2021. – 370 p. 2. Barkalov, S.A., Burkov V.N., Gelrud Ya.D. et al. (2019) Smart Project Management: A Manual. Chelyabinsk:YurGU Publishers. – 189 p. () 3. Stetsyuk, P.I., Slabospitska O.O., Ushakova O.O. (2016) Maximal independent sets of graph vertices and their application in project management. Pytannya prykladnoyi matematyky i matematychnoho modelyuvannya. D.: RVV DNU. 16. P. 151-162 (In Ukrainian) 4. Christofides, N (1975) Graph Theory: An Algorithmic Approach. Academic Press Inc, Cambridge, Massachusetts, United States. 5. Garey, M. R.; Johnson, D. S. (1982) Computing machines and hard-to-solve tasks. M.: Mir. 1982. 416 p. (In Russian) Рисунок 3 – Граф для побудови ядер незалежних груп, розфарбований фарбами 1-3 Слід зазначити, що це – відомий граф Петерсена [12], широко застосовний в теорії графів у ролі демон- страційного прикладу. Відповідний йому склад ядер трьох незалежних груп має вигляд Методи і засоби програмної інженерії d1 d2 d3d4 d5 d6 d7 d8 d9 d10 1 1 1 1 2 2 23 3 3 Рисунок 3 – Граф для побудови ядер незалежних груп, розфарбований фарбами 1-3 Слід зазначити, що це – відомий граф Петерсена [12], широко застосовний в теорії графів у ролі демонстраційного прикладу. Відповідний йому склад ядер трьох незалежних груп має вигляд },,{};,,{};,,,{ 10933652287411 dddCdddCddddC === . Висновки Запропоновані постановки задач булевого лінійного програмування для знаходження незалежної множи- ни максимального розміру та заданої кількості попарно неперетинних незалежних множин, що мають максима- льний сумарний розмір, і відповідні їм AMPL-коди можуть бути використані для автоматизованого отримання розв’язків тих задач керування програмним проектом, розв’язання яких недостатньо регламентовано в руслі технологічно-описового підходу до керування ним. Це насамперед задачі формування найбільш згуртованої команди програмного проекту; визначення множини програмних проектів у портфелі, які (не) можна виконува- ти одночасно, формування та аналізу під-команд для складного розподіленого програмного проекту. Через слабку формалізованість та істотну невизначеність, властиві програмному проекту, отримані розв’язки стають для них (суб)-оптимальними прототип ними рішеннями, ситуативно налаштовними в руслі технологічного підходу, а ретроспектива процесу налаштування надає підстави для «зворотного» вдосконалення висхідних постановок оптимізаційних задач. Демонструючи перспективність вдосконалення програмного проекту за допомогою інструментарію дис- кретної оптимізації, наведені алгоритми висвітлюють доцільність узагальнення незалежної множини/кліки до так званих co-k-плексу/k-плексу, яке складає напрям подальших досліджень авторів. Однак навіть наведені AMPL-коди та програма-солвер gurobi можуть бути використані в навчальних ку- рсах з дисциплін «Управління програмними проектами» та «Оптимізаційні методи управління проектами» у вищих навчальних закладах України різних рівнів акредитації. Література 1. Стандарт з управління проектами та настанова до Зводу знань з управління проектами (Настанова PMBOK). Сьоме видання. Newton Square, Pennsylvanya: Project management Institute, Inc, 2021. – 370 c. [Електронний ресурс]. – Режим доступу: https://pmiukraine.org/wp- content/uploads/2022/08/PMBOK7_Ukr_ForPersonalUseOnly.pdf. 2. Баркалов С.А. Умное управление проектами: учебное пособие / С.А. Баркалов, В.Н. Бурков, Я.Д. Гельруд и др.; под ред. чл.-корр. РАН Д. А. Новикова. Челябинск: Издательский центр ЮУрГУ, 2019. – 189 с. 3. Стецюк П.І. Максимальні незалежні множини вершин графа та їх застосування в керуванні проектами / П.І.Стецюк , О.О.Слабоспицька, О.О.Ушакова // Пит. прикладної математики і математичного моделювання. Д.: РВВ ДНУ, 2016. – Вип. 16. – С. 151–162. 4. Кристофидес Н. Теория графов. Алгоритмический подход / Н.Кристофидес. ‒ M: Мир. 1978. ‒ 432 с. 5. Гэри М. Вычислительные машины и труднорешаемые задачи. / Гэри М., Джонсон Д. ‒ М.: Мир. 1982. ‒ 416 с. 6. Визинг В.Г. К проблеме минимальной раскраски вершин графа / В.Г.Визинг, Г.С.Плесневич // Сибирский математический журнал. – 1965. – Т.6. – № 1. – С. 234–236. 7. Стецюк П.И. Об ЛП-ориентированных верхних оценках для взвешенного числа устойчивости графа / П.И.Стецюк, А.П.Лиховид – Кибернетика и системный анализ. – 2009. – № 1. – C. 157–170. 8. Balansundaram B. Clique relaxations in social network analysis: the maximum k-plex problem / B.Balansundaram, S.Butenko, I.V.Hicks // Operations Research. – 2011. – V.59. – N 1. – P. 133–142. 9. Gurobi Optimization Inc.: Gurobi Optimizer Reference Manual.[Electronic resource]. – Mode of access: http://www.gurobi.com/documentation/ 10. Fourer R. AMPL, A Modeling Language for Mathematical Programming / R. Fourer, D. Gay, B. Kernighan. – Belmont: Duxburry Press, 2003. – 517 p. 11. AMPL for research [Electronic resource]. – Mode of access: https://ampl.com/. 12. Нікольський Ю.В. Дискретна математика / Ю.В. Нікольський, В.В. Пасічник, Ю.М. Щербина. – К.: Видавнича група BHV, 2007. – 368 с. References 1. A Guide to the Project Management Body of Knowledge (PMBOK Guide) – and the Standard for Project Management [7 ed.]. Newton Square, Pennsylvanya: Project management Institute, Inc, 2021. – 370 p. 2. Barkalov, S.A., Burkov V.N., Gelrud Ya.D. et al. (2019) Smart Project Management: A Manual. Chelyabinsk:YurGU Publishers. – 189 p. () 3. Stetsyuk, P.I., Slabospitska O.O., Ushakova O.O. (2016) Maximal independent sets of graph vertices and their application in project management. Pytannya prykladnoyi matematyky i matematychnoho modelyuvannya. D.: RVV DNU. 16. P. 151-162 (In Ukrainian) 4. Christofides, N (1975) Graph Theory: An Algorithmic Approach. Academic Press Inc, Cambridge, Massachusetts, United States. 5. Garey, M. R.; Johnson, D. S. (1982) Computing machines and hard-to-solve tasks. M.: Mir. 1982. 416 p. (In Russian) Висновки Запропоновані постановки задач булевого лінійного програмування для знаходження незалежної мно- жини максимального розміру та заданої кількості попарно неперетинних незалежних множин, що мають мак- симальний сумарний розмір, і відповідні їм AMPL-коди можуть бути використані для автоматизованого отри- мання розв’язків тих задач керування програмним проектом, розв’язання яких недостатньо регламентовано в руслі технологічно-описового підходу до керування ним. Це насамперед задачі формування найбільш згуртова- ної команди програмного проекту; визначення множини програмних проектів у портфелі, які (не) можна вико- нувати одночасно, формування та аналізу під-команд для складного розподіленого програмного проекту. Через слабку формалізованість та істотну невизначеність, властиві програмному проекту, отримані розв’язки стають для них (суб)-оптимальними прототип ними рішеннями, ситуативно налаштовними в руслі технологічного підходу, а ретроспектива процесу налаштування надає підстави для «зворотного» вдосконалення висхідних постановок оптимізаційних задач. Демонструючи перспективність вдосконалення програмного проекту за допомогою інструментарію дискретної оптимізації, наведені алгоритми висвітлюють доцільність узагальнення незалежної множини/кліки до так званих co-k-плексу/k-плексу, яке складає напрям подальших досліджень авторів. Однак навіть наведені AMPL-коди та програма-солвер gurobi можуть бути використані в навчаль- них курсах з дисциплін «Управління програмними проектами» та «Оптимізаційні методи управління про- ектами» у вищих навчальних закладах України різних рівнів акредитації. 83 Методи і засоби програмної інженерії Література 1. Стандарт з управління проектами та настанова до Зводу знань з управління проектами (Настанова PMBOK). Сьоме видання. Newton Square, Pennsylvanya: Project management Institute, Inc, 2021. – 370 c. [Електронний ресурс]. – Режим доступу: https:// pmiukraine.org/wp-content/uploads/2022/08/PMBOK7_Ukr_ForPersonalUseOnly.pdf. 2. Баркалов С.А. Умное управление проектами: учебное пособие / С.А. Баркалов, В.Н. Бурков, Я.Д. Гельруд и др.; под ред. чл.-корр. РАН Д. А. Новикова. Челябинск: Издательский центр ЮУрГУ, 2019. – 189 с. 3. Стецюк П.І. Максимальні незалежні множини вершин графа та їх застосування в керуванні проектами / П.І.Стецюк , О.О.Слабоспицька, О.О.Ушакова // Пит. прикладної математики і математичного моделювання. Д.: РВВ ДНУ, 2016. – Вип. 16. – С. 151–162. 4. Кристофидес Н. Теория графов. Алгоритмический подход / Н.Кристофидес. ‒ M: Мир. 1978. ‒ 432 с. 5. Гэри М. Вычислительные машины и труднорешаемые задачи. / Гэри М., Джонсон Д. ‒ М.: Мир. 1982. ‒ 416 с. 6. Визинг В.Г. К проблеме минимальной раскраски вершин графа / В.Г.Визинг, Г.С.Плесневич // Сибирский математический жур- нал. –1965. – Т.6. – № 1. – С. 234–236. 7. Стецюк П.И. Об ЛП-ориентированных верхних оценках для взвешенного числа устойчивости графа / П.И.Стецюк, А.П.Лиховид – Кибернетика и системный анализ. – 2009. – № 1. – C. 157–170. 8. Balansundaram B. Clique relaxations in social network analysis: the maximum k-plex problem / B.Balansundaram, S.Butenko, I.V.Hicks // Operations Research. – 2011. – V.59. – N 1. – P. 133–142. 9. Gurobi Optimization Inc.: Gurobi Optimizer Reference Manual.[Electronic resource]. – Mode of access: http://www.gurobi.com/ documentation/ 10. Fourer R. AMPL, A Modeling Language for Mathematical Programming / R. Fourer, D. Gay, B. Kernighan. – Belmont: Duxburry Press, 2003. – 517 p. 11. AMPL for research [Electronic resource]. – Mode of access: https://ampl.com/. 12. Нікольський Ю.В. Дискретна математика / Ю.В. Нікольський, В.В. Пасічник, Ю.М. Щербина. – К.: Видавнича група BHV, 2007. – 368 с. References 1. A Guide to the Project Management Body of Knowledge (PMBOK Guide) – and the Standard for Project Management [7 ed.]. Newton Square, Pennsylvanya: Project management Institute, Inc, 2021. – 370 p. 2. Barkalov, S.A., Burkov V.N., Gelrud Ya.D. et al. (2019) Smart Project Management: A Manual. Chelyabinsk:YurGU Publishers. – 189 p. 3. Stetsyuk, P.I., Slabospitska O.O., Ushakova O.O. (2016) Maximal independent sets of graph vertices and their application in project management. Pytannya prykladnoyi matematyky i matematychnoho modelyuvannya. D.: RVV DNU. 16. P. 151-162 (In Ukrainian) 4. Christofides, N (1975) Graph Theory: An Algorithmic Approach. Academic Press Inc, Cambridge, Massachusetts, United States. 5. Garey, M. R.; Johnson, D. S. (1982) Computing machines and hard-to-solve tasks. M.: Mir. 1982. 416 p. (In Russian) 6. Vizing, V.G., Plesnevich, G.S. (1965) On the problem of minimal coloring of graph vertices. Sibirskij matematiceskij zurnal 6 (1) P. 234-236. (In Russian) 7. Stetsyuk, P.I., Lykhovyd, A.P. (2009) LP-oriented upper bounds for the weighted stability number of a graph. Cybern Syst Anal. 45. P.141–152. 8. Balansundaram, B., Butenko, S., Hicks, I.V. Clique relaxations in social network analysis: the maximum k-plex problem. Operations Research. 2011. Vol. 59, N 1. P. 133–142. 9. Gurobi Optimization Inc.: Gurobi Optimizer Reference Manual. http://www.gurobi.com/documentation/ 10. Fourer, R., Gay D., Kernighan B. (2003) AMPL, A Modeling Language for Mathematical Programming. Belmont: Duxburry Press. 517 p. 11. AMPL for research [Electronic resource]: https://ampl.com/ 12. Nikolskyi, Yu. V., Pasichnyk, V. V., Shcherbina, Yu. M. (2007) Dyskretna matematyka. 368 p. (In Ukrainian) Одержано 17.08.2022 Про авторів: Слабоспицька Ольга Олександрівна старший науковий співробітник, ст. наук. співроб. наукового відділу, 03143, Київ-143, б. Ак. Вернадського 69а, кв.18, кількість публікацій у вітчизняних виданнях – більше 50, кількість у закордонних виданнях – 5, h-index: 5, http://orcid.org/0000-0001-6556-0947 Стецюк Петро Іванович старший науковий співробітник, завідувач відділу, 02090, Київ, вул. Новаторів 22в, кв.269 Кількість публікацій в українських виданнях – більше 100 Кількість зарубіжних публікацій – 50, h-index: 9 (Scopus), https://orcid.org/0000-0003-4036-2543 84 Методи і засоби програмної інженерії Хом’як Ольга Миколаївна старший науковий співробітник наукового відділу, 08133, м. Вишневе, вул. В. Чорновола, 48Б, кв.137. Кількість публікацій в українських виданнях – 25 Кількість зарубіжних публікацій – 12. h-index: 2 (Scopus), https://orcid.org/0000-0002-5384-9070 Місце роботи авторів: Слабоспицька Ольга Олександрівна Інститут програмних систем НАН України, 03187, Київ-187, Проспект Академіка Глушкова, 40. Тел.: +38(044) 526 4286. olsips2017@gmail.com Стецюк Петро Іванович, Хом’як Ольга Миколаївна Інститут кібернетики імені В.М. Глушкова НАН України, м. Київ, 03187, Україна, Проспект Академіка Глушкова, 40 Тел. (+38) (044) 526-20-08 Факс (+38) (044) 526-41-78 stetsyukp@gmail.com, khomiak.olha@gmail.com Прізвища та ініціали авторів і назва доповіді англійською мовою: Slabospitska O.O., Stetsyuk P.I., Khomiak O.M. Maximum independent sets of graph vertices searching for software projects improvement Прізвища та ініціали авторів і назва доповіді українською мовою: Слабоспицька О.О., Стецюк П.І., Хомяк О.М. Пошук максимальних незалежних множин вершин графа для вдосконалення програмних проєктів Контакти для редактора: Слабоспицька Ольга Олександрівна, 093 219 29 30, olsips2017@gmail.com