Theoretical and applied aspects of relations and operations for sequences of time intervals

Prombles in programming 2013; 3: 61-68

Збережено в:
Бібліографічні деталі
Дата:2025
Автори: Kudym, K.A., Reznichenko, V.A., Proskudina, G.Yu., Ovdii, О.М.
Формат: Стаття
Мова:rus
Опубліковано: Інститут програмних систем НАН України 2025
Теми:
Онлайн доступ:https://pp.isofts.kiev.ua/index.php/ojs1/article/view/753
Теги: Додати тег
Немає тегів, Будьте першим, хто поставить тег для цього запису!
Назва журналу:Problems in programming

Репозитарії

Problems in programming
id pp_isofts_kiev_ua-article-753
record_format ojs
resource_txt_mv ppisoftskievua/92/caacc13c6babcaa0038f5474578d9e92.pdf
spelling pp_isofts_kiev_ua-article-7532025-06-21T15:30:49Z Theoretical and applied aspects of relations and operations for sequences of time intervals Теоретический и прикладной аспекты отношений и операций для последовательностей временных интервалов Kudym, K.A. Reznichenko, V.A. Proskudina, G.Yu. Ovdii, О.М. UDC 004.62 УДК 004.62 Prombles in programming 2013; 3: 61-68 Рассмотрены понятия момента времени, временного интервала и временной цепочки ― последовательности интервалов времени. Определены основные отношения и операции над этими объектами. Приведены эффективные алгоритмы для реализации операций над временными цепочками. Рассматривается практическое применение временных цепочек.Prombles in programming 2013; 3: 61-68 Інститут програмних систем НАН України 2025-06-21 Article Article application/pdf https://pp.isofts.kiev.ua/index.php/ojs1/article/view/753 PROBLEMS IN PROGRAMMING; No 3 (2013); 61-68 ПРОБЛЕМЫ ПРОГРАММИРОВАНИЯ; No 3 (2013); 61-68 ПРОБЛЕМИ ПРОГРАМУВАННЯ; No 3 (2013); 61-68 1727-4907 rus https://pp.isofts.kiev.ua/index.php/ojs1/article/view/753/805 Copyright (c) 2025 PROBLEMS IN PROGRAMMING
institution Problems in programming
baseUrl_str https://pp.isofts.kiev.ua/index.php/ojs1/oai
datestamp_date 2025-06-21T15:30:49Z
collection OJS
language rus
topic
UDC 004.62
spellingShingle
UDC 004.62
Kudym, K.A.
Reznichenko, V.A.
Proskudina, G.Yu.
Ovdii, О.М.
Theoretical and applied aspects of relations and operations for sequences of time intervals
topic_facet
UDC 004.62

УДК 004.62
format Article
author Kudym, K.A.
Reznichenko, V.A.
Proskudina, G.Yu.
Ovdii, О.М.
author_facet Kudym, K.A.
Reznichenko, V.A.
Proskudina, G.Yu.
Ovdii, О.М.
author_sort Kudym, K.A.
title Theoretical and applied aspects of relations and operations for sequences of time intervals
title_short Theoretical and applied aspects of relations and operations for sequences of time intervals
title_full Theoretical and applied aspects of relations and operations for sequences of time intervals
title_fullStr Theoretical and applied aspects of relations and operations for sequences of time intervals
title_full_unstemmed Theoretical and applied aspects of relations and operations for sequences of time intervals
title_sort theoretical and applied aspects of relations and operations for sequences of time intervals
title_alt Теоретический и прикладной аспекты отношений и операций для последовательностей временных интервалов
description Prombles in programming 2013; 3: 61-68
publisher Інститут програмних систем НАН України
publishDate 2025
url https://pp.isofts.kiev.ua/index.php/ojs1/article/view/753
work_keys_str_mv AT kudymka theoreticalandappliedaspectsofrelationsandoperationsforsequencesoftimeintervals
AT reznichenkova theoreticalandappliedaspectsofrelationsandoperationsforsequencesoftimeintervals
AT proskudinagyu theoreticalandappliedaspectsofrelationsandoperationsforsequencesoftimeintervals
AT ovdiiom theoreticalandappliedaspectsofrelationsandoperationsforsequencesoftimeintervals
AT kudymka teoretičeskijiprikladnojaspektyotnošenijioperacijdlâposledovatelʹnostejvremennyhintervalov
AT reznichenkova teoretičeskijiprikladnojaspektyotnošenijioperacijdlâposledovatelʹnostejvremennyhintervalov
AT proskudinagyu teoretičeskijiprikladnojaspektyotnošenijioperacijdlâposledovatelʹnostejvremennyhintervalov
AT ovdiiom teoretičeskijiprikladnojaspektyotnošenijioperacijdlâposledovatelʹnostejvremennyhintervalov
first_indexed 2025-07-17T09:43:13Z
last_indexed 2025-07-17T09:43:13Z
_version_ 1838409209629114368
fulltext Експертні та інтелектуальні інформаційні системи © К.А. Кудим, В.А. Резниченко, Г.Ю. Проскудина, О.М. Овдей, 2013 ISSN 1727-4907. Проблеми програмування. 2013. № 3 61 УДК 004.62 К.А. Кудим, В.А. Резниченко, Г.Ю. Проскудина, О.М. Овдей ТЕОРЕТИЧЕСКИЙ И ПРИКЛАДНОЙ АСПЕКТЫ ОТНОШЕНИЙ И ОПЕРАЦИЙ ДЛЯ ПОСЛЕДОВАТЕЛЬНОСТЕЙ ВРЕМЕННЫХ ИНТЕРВАЛОВ Рассмотрены понятия момента времени, временного интервала и временной цепочки ― последова- тельности интервалов времени. Определены основные отношения и операции над этими объектами. Приведены эффективные алгоритмы для реализации операций над временными цепочками. Рассматри- вается практическое применение временных цепочек. Введение Данные в компьютерных системах так или иначе связаны с различными событиями, интервалами времени. Отно- шения и операции над временными интер- валами определены уже довольно давно и широко используются [1–3]. В этой работе исследуются такие структуры времени как последовательности интервалов времени или временные цепочки, которые можно рассматривать как обобщение временных интервалов. В работе определены отноше- ния между временными цепочками, их свойства, а также операции над ними. Использование временных цепочек про- иллюстрировано на практических приме- рах. Разработаны эффективные алгоритмы для реализации операций над временными цепочками. 1. Представление времени и вре- менные последовательности Понятие времени в компьютерных системах представляется как правило мо- ментами времени либо временными ин- тервалами. В дополнение к этим двум ба- зовым представлениям введём ещё одно, а именно временную цепочку или, другими словами, последовательность временных интервалов. Момент времени – точка на оси времени. Любое событие можно связать с фактом возникновения, которому ставится в соответствие момент времени. Интервал времени – непустой от- резок временной шкалы. Как правило интервал времени задается моментами начала и конца. Некоторое утверждение или факт в предметной области может быть действительным в течение опреде- ленного интервала времени. То есть с ин- тервалом может быть связан любой факт, который имеет продолжительность своего существования. Временная цепочка – это упорядо- ченное множество интервалов времени. Интервал времени является частным слу- чаем временной цепочки, состоящая лишь из одного интервала. С помощью времен- ной цепочки можно выразить, когда имел место какой-либо факт или, другими сло- вами, можно выразить истинность неко- торого факта предметной области во вре- мени. Например, в предметной области «Отдел кадров» фиксируется факт «Чело- век работает в отделе». Из приведенной далее таблицы видно, что И.В. Петров ра- ботал в отделе B1 два интервала времени, т. е. можно сказать, что с этим фактом свя- зана временная цепочка. ФИО Отдел Дата начала Дата конца Петров И.В В1 22.06.2009 03.09.2010 Петров И.В В3 03.09.2010 01.02.2011 Петров И.В В1 01.02.2011 01.01.2013 Далее рассмотрим более формально упомянутые выше базовые конструкции времени. Експертні та інтелектуальні інформаційні системи 62 2. Определения, отношения и операции над элементами времени 2.1. Точка Определение. Пусть P – дискрет- ное линейно упорядоченное множество. Назовём элементы данного множества точками. Это могут быть: моменты време- ни, целые числа и др. Точки будем обозна- чать строчными буквами латинского алфа- вита a, b, c, … Отношения. a < b, a = b, a b … Операции. Сдвиг точки на n единиц: a + n. 2.2. Интервал Определение. Пусть a, b ϵ P, тогда если a < b, то [a,b] = {x ϵ P: a≤x≤b}; [a,b) = {x ϵ P: a≤x<b}; (a,b] = {x ϵ P: a<x≤b}; (a,b) = {x ϵ P: a<x<b} ― интервалы. Из данного определения видно, что интервал может как включать, так и не включать начальный и конечный момен- ты времени, являясь таким образом закры- тым [a,b], открытым (a,b), закрыто-откры- тым [a,b) или открыто-закрытым (a,b] ин- тервалом. Интервал, не содержащий ни одной точки, назовём пустым и обозначим [). Множество интервалов обозначим R. Ин- тервалы будем обозначать прописными буквами латинского алфавита A, B, C, .... Длина интервала ― это количество точек, содержащихся в интервале либо ко- личество единичных интервалов, состав- ляющих интервал, и задается операцией: length([a,b)) = b – a. Определим операции для нахожде- ния граничных точек. Начало интервала: begin(A) = a, где A=[a,b] ∨ A=(a,b] ∨ A=[a,b) ∨ A=(a,b). Конец интервала: end([a,b)) = b, где A=[a,b] ∨ A=(a,b] ∨ A=[a,b) ∨ A=(a,b). Далее, для простоты изложения, мы ограничимся только закрыто-открытым интервалом A: [a,b) = {x ϵ P: a≤x<b}. Отношения. Определим ряд полез- ных отношений между точкой и интерва- лом и между двумя интервалами. Точка-интервал 1. Точка x находится до интервала А: x < A ⇔ x < begin(A). 2. Точка a – начальная точка интер- вала A: Begin(A, a) ⇔ begin(A)=a. 3. Точка b – конечная точка интер- вала A: End([A,b) ⇔ end(A)=b. Интервал-интервал Дж. Аллен показал [1–2], что между двумя непустыми интервалами времени существует 13 основных бинарных отно- шений или предикатов взаимного распо- ложения интервалов друг относительно друга, которые сейчас так и принято назы- вать отношениями Аллена. 1. Интервал А находится перед ин- тервалом B: A before B ⇔ A < B ⇔ end(A) < begin(B). Из этого отношения вытекает сле- дующее свойство: A before B ⇒ ∃C ϵ R, C ≠ ≠ [):A meets C meets B. 2. Интервал A находится после ин- тервала B: A after B ⇔B before A ⇔B < A ⇔ ⇔ end(B) < begin(A). 3. Интервал A равен интервалу B: A equals B ⇔ A = B ⇔ ⇔ begin(A) = begin(B) & end(A) = end(B). 4. Интервал B следует непосред- ственно за A (или: интервал B касается ин- тервала A справа): A meets B ⇔ end(A) = begin(B). Експертні та інтелектуальні інформаційні системи 63 5. Интервал A следует непосред- ственно за B (или: интервал A касается ин- тервала B справа): A met_by B ⇔B meets A ⇔ end(B) = = begin(A). 6. Интервал B перекрывает интер- вал A: A overlaps B ⇔ ⇔ begin(A) ≤ end(B) & begin(B) ≤ end(A). 7. Интервал A перекрывает интер- вал B: A overlapped_by B ⇔ B overlaps A⇔ ⇔ begin(B) ≤ end(A) & begin(A) ≤ end(B). 8. Интервал A находится в интерва- ле B (или интервал В содержит интервал А): A during B ⇔ A ⊆ B ⇔ ⇔ begin(B) ≤ begin(A) & end(A) ≤ end(B). 9. Интервал B находится в интерва- ле A (или интервал A содержит интервал B): A contains B ⇔ B during A ⇔ B ⊆ A. 10. Интервал A начинается одно- временно с интервалом В: A starts B ⇔ begin(A) = begin(B). 11. Интервал В начинается одно- временно с интервалом А: A started_by B ⇔ begin(B) = begin(A). 12. Интервал A заканчивается од- новременно с интервалом В: A finishes B ⇔ end(A) = end(B). 13. Интервал В заканчивается од- новременно с интервалом А: A finished_by B ⇔ end(B) = end(A). Перечисленные отношения для удобства можно комбинировать. Напри- мер, часто используют следующее отно- шение. Два интервала либо соприкасаются либо пересекаются: Merges(A,B) ⇔ ¬(A before B) & ¬(B before A) ⇔ ⇔ ¬(A < B) & ¬(B < A) ⇔ ⇔ ¬(end(A) < begin(B))&¬(end(B) < begin(A)) ⇔ ⇔ begin(B) ≤ end(A) & begin(A) ≤ end(B). Операции над интервалами. Вы- ше были приведены операции для нахож- дения длины интервала и нахождения гра- ничных точек. Часто для интервалов также используются операции объединения, пе- ресечения, разности и сдвига: 1. Объединение двух интервалов: A∪B=[min(begin(A),begin(B)), max(end(A),end(B))), если Merges(A,B), в противном случае не определено. 2. Пересечение двух интервалов: A ⋂ B=[max(begin(A),begin(B)), min(end(A),end(B))), если A overlaps B; в противном случае не определено. 3. Разность двух интервалов A – B равна: [begin(A), min(begin(B), end(A))), если begin(A)<begin(B) & end(A) ≤ end(B); либо равна: [max(end(B), end(A)), end(A))), ли begin(A) ≥ begin(B) & end(A) > end(B), в противном случае не определено. 4. Сдвиг интервала: A + n = [begin(A)+n, end(A)+n). Однако, рассматриваемые операции не являются замкнутыми относительно ин- тервалов времени. Объединение двух не- пересекающихся интервалов возвращает два интервала. Разность двух интервалов может возвратить пустое множество, один или два интервала. Експертні та інтелектуальні інформаційні системи 64 2.3. Цепочка Определение. Последоватьльность непустых интервалов назовём цепочкой, если для любых двух соседних её интерва- лов найдётся непустой интервал, лежащий между ними. Формально: α = <A1, ..., An>, где Ai ϵ R, Ai ≠ [), и для i=1…n-1 Ai before Ai+1. Цепочку, не содержащую ни одного интервала, назовём пустой и обозначим <>. Множество всех цепочек обозначим C. Отношения. Пусть α и β цепочки, A, Ai ,B ,Bi непустые интервалы, a точ- ка. Введем следующие отношения: 1. Интервал в цепочке: A ϵ α ⇔ α=<A1,...,An> & ∃i: A = Ai 2. Точка принадлежит цепочке: a ϵ α ⇔ ∃A ϵ α: a ϵ A 3. Первый интервал цепочки: First(α, A) ⇔ α=<A, B1,...,Bn> 4. Последний интервал цепочки: Last(α, A) ⇔ α=<B1,...,Bn, A> 5. Цепочка α предшествует цепочке β: α < β ⇔ last(α) < first(β) 6. Интервал B входит в цепочку α: B⊆<A1,A2,..An> ⇔ B⊆A1 ∨ B⊆A2 ∨ ... ∨ B⊆An 7. Цепочка β=<B1,...,Bn-1> дополняет цепочку α=<A1,...,An> ⇔ A1 meets B1 meets A2 meets B2 meets ... meets Bn-1 meets An Свойство: β дополняет α ⇒ α+β=<A1+B1+A2+B2+...+Bn-1+An> 8. Цепочка β входит во все интервалы цепочки α: B1⊆<A1 & B2⊆A2 &.. & Bn⊆An 9. Цепочка β перекрывает все промежутки це- почки α: A α, B β: A overlaps B α A α a α A α A α β α B α β α β α β Експертні та інтелектуальні інформаційні системи 65 Далее определим ряд полезных от- ношений для цепочек: Операции над цепочками 1. Возвращает первый интервал це- почки: first(α) = A: First(α, A). 2. Возвращает последний интервал цепочки: last(α) = A: Last(α, A). 2a. Мощность: cardinality(α) = n для α = <A1,...,An>. 2b. kth(α,k) = Ak для α =<A1,...,Ak,...,An>, если 1 ≤ k ≤ length(α); в противном случае не определено. 2c. Протяжённость цепочки: length(α) = length(Ai). 2d. Охват цепочки или общая длина от начала первого интервала до конца по- следнего: coverage(α) = end(An) ― begin(A1). 3. Объединение цепочки с пустой цепочкой: α ∪ <> = α. 3a. <[)> = <>. 4. Объединение двух цепочек, одна из которых состоит из одного интервала: <A1,...,An> ∪ <B> = =<A1,...,Ak,[min(begin(Ak+1),begin(B)), max(end(Al―1),end(B))],Al,...,An>, где k=argmax[Ai<B](end(Ai)), l = argmin[B<Ai](begin(Ai)). 5. Объединение двух цепочек: α ∪ <B1, B2, ..., Bn> = (α ∪ <B1>) ∪ ∪ <B2,..., Bn>. Свойство: α∪α = α. 6. Пересечение цепочки с элемен- тарной цепочкой: <A1,...,An>∩<B> = <A1∩B> ∪ ... ... ∪ <An∩B>. 7. Пересечение двух цепочек: α∩<B1,...,Bn> = (α∩B1)∪...∪(α∩Bn). 8. Разность цепочки и элементарной цепочки: <A1,...,An> ― <B> = <A1 ― B> ∪ ... ... ∪ <An ― B>. 9. Разность двух цепочек: Α ― <B1,...,Bn> = (α ― B1)∪...∪(α ― Bn). 10. Сдвиг цепочки: α + n = <A1 + n, ..., An + n> 11. Периодическая цепочка: (α,n)* = ... ∪(α-2n)∪ ∪ (α-n)∪α∪(α+n)∪(α+2n)+... Из приведенных определений сле- дует, что все рассматриваемые операции относительно цепочек, в отличие от ана- логичных операций относительно интер- валов, являются замкнутыми, т. е. в ре- зультате дают цепочку. 3. Примеры использования цепочек данных Представим факт «Человек работает в отделе» из приведенного выше примера (см. раздел 1.) в виде цепочек интервалов. ФИО Отдел Время работы Петров И.В. В1 <[1998,2001), [2010,2012)> Петров И.В. В3 <[1996–1998), [2002– 2006), [2007–2010)> Иванов И.И. В1 <[1996,2000)> Приведем примеры операций над цепочками данных, дающих ответы на со- держательно сформулированные запросы с использованием этой структуры данных. 1. Когда Петров работал в отделе В1? α = <[1998,2001), [2010,2012)>. 2. Когда Петров не работал в отде- ле В1? α=<[1800,2013)> - <[1998,2001), [2010,2012)>= = <[1800,1998), [2001,2010), [2012,2013)>. 3. Когда Петров и Иванов работали вместе в отделе В1? α=<[1996,2000)>∩<[1998,2001),[2010,2012)>= = <[1998,2000)>. 4. Когда Петров или Иванов рабо- тал в отделе В1? α=<[1996,2000)>∪<[1998,2001),[2010,2012)>= Експертні та інтелектуальні інформаційні системи 66 = <[1996,2001), [2010,2012)>. Другой пример использования це- почек: регистрация факта пребывания пользователя на сайте Х. α=<[2013-04-14 09:02:33, 2013-04-14 12:22:35), [2013-04-15 16:02:33, 2013-04-15 16:22:35), [2013-04-15 18:12:33, 2013-04-15 18:32:33)> В этом случае, используя операцию протяженности цепочки length(α), можно легко ответить на следующий запрос: Cколько Сидоров провел времени на сайте Х? 4. Алгоритмы операций над це- почками Цепочку <A1,...,An> представим массивом M[1..n]. Интервал A представим парой целых чисел [A.begin, A.end). Q – большое число. На рис. 1, 2, 3 соответственно по- казаны алгоритмы выполнения операций объединения, пересечения и дополнения данных, имеющих тип цепочка. Сложность алгоритма линейная: если C1.length = n, C2.length = m, то сложность алгортима O(n+m). CHAIN_UNION(M1, M2, M) i ← 1 j ← 1 k ← 0 in1 ← false in2 ← false while true do if i ≤ M1.length then A1 ← M1[i] else A1.begin ← Q, A1.end ← Q if i ≤ M2.length then A2 ← M2[i] else A2.begin ← Q, A2.end ← Q if A2.begin = Q and A1.begin = Q then return if in1 and in2 then if A1.end ≤ A2.end then in1 ← false, B.end ← A1.end, i ← i+1 if A2.end ≤ A1.end then in2 ← false, B.end ← A2.end, j ← j+1 if A1.end = A2.end then k ← k+1, M[k] ← B else if in1 and not in2 then if A1.end ≤ A2.begin then in1 ← false, i ← i+1, k ← k+1, M[k] ← B if A2.begin ≤ A1.end then in2 ← true else if not in1 and in2 then if A1.begin ≤ A2.end then in1 ← true if A2.end ≤ A1.begin then in2 ← false, j ← j+1, k ← k+1, M[k] ← B else if not in1 and not in2 then if A1.begin ≤ A2.begin then in1 ← true, B.begin ← A1.begin if A2.begin ≤ A1.begin then in2 ← true, B.begin ← A2.begin M.length = k Рис. 1. Алгоритм объединения двух цепочек Експертні та інтелектуальні інформаційні системи 67 CHAIN_INTERSECTION(M1, M2, M) i ← 1 j ← 1 k ← 0 in1 ← false in2 ← false while true do if i ≤ M1.length then A1 ← M1[i] else A1.begin ← Q, A1.end ← Q if i ≤ M2.length then A2 ← M2[i] else A2.begin ← Q, A2.end ← Q if A2.begin = Q and A1.begin = Q then return if in1 and in2 then if A1.end ≤ A2.end then in1 ← false i ← i+1, B.end ← A1.end if A2.end ≤ A1.end then in2 ← false j ← j+1, B.end ← A2.end k ← k+1, M[k] ← B else if in1 and not in2 then if A1.end ≤ A2.begin then in1 ← false, i ← i+1 if A2.begin ≤ A1.end then in2 ← true, B.begin ← A2.begin else if not in1 and in2 then if A1.begin ≤ A2.end then in1 ← true, B.begin ← A1.begin if A2.end ≤ A1.begin then in2 ← false, j ← j+1 else if not in1 and not in2 then if A1.begin ≤ A2.begin then in1 ← true if A2.begin ≤ A1.begin then in2 ← true if A1.begin = A2.begin then B.begin ← A1.begin M.length = k Рис. 2. Алгоритм пересечения двух цепочек CHAIN_COMPLEMENT(M1, M2, M) i ← 1 j ← 1 k ← 0 in1 ← false in2 ← false while true do if i ≤ M1.length then A1 ← M1[i] else A1.begin ← Q, A1.end ← Q if i ≤ M2.length then A2 ← M2[i] else A2.begin ← Q, A2.end ← Q if A1.begin = Q and A2.begin = Q Експертні та інтелектуальні інформаційні системи 68 then return if in1 and in2 then if A1.end ≤ A2.end then in1 ← false, i ← i+1 if A2.end ≤ A1.end then in2 ← false, j ← j+1, B.begin ← A2.end else if in1 and not in2 then if A1.end ≤ A2.begin then in1 ← false, i ← i+1, B.end ← A1.end if A2.begin ≤ A1.end then in2 ← true, B.end ← A2.begin k ← k+1, M[k] ← B else if not in1 and in2 then if A1.begin ≤ A2.end then in1 ← true if A2.end ≤ A1.begin then in2 ← false, j ← j+1 if A1.begin = A2.end then B.begin = A1.begin else if not in1 and not in2 then if A1.begin ≤ A2.begin then in1 ← true, B.begin ← A1.begin if A2.begin ≤ A1.begin then in2 ← true M.length = k Рис. 3. Алгоритм дополнения двух цепочек Заключение Использование временных интерва- лов в программировании достаточно под- робно изучено. Временные цепочки можно рассматривать как обобщение временных интервалов. В работе определены отноше- ния между временными цепочками, их свойства, а также операции над ними. В работе показано, что в отличии от опера- ций над интервалами операции над цепоч- ками замкнуты, что снимает ряд ограниче- ний и тем самым упрощает их использова- ние. Разработаны эффективные алгоритмы для реализации операций над временными цепочками. Рассмотрены примеры их практического использования. Таким обра- зом предложена эффективная структура для хранения и манипулирования темпо- ральными данными. 1. James F. Allen Maintaining knowledge about temporal intervals // Communications of ACM. – 1983. – Vol. 26. – N 11. 2. James F. Allen Towards a General Theory of Action and Time // Artificial Intelligence. – 1984. – N 23. – P. 123–154. 3. Richard Snodgrass. Developing Time- Oriented Database Applications in SQL, Morgan Kaufmann, 1999. Получено 10.01.2013 Об авторах: Кудим Кузьма Алексеевич, младшний научный сотрудник, Резниченко Валерий Анатольевич, ведущий научный сотрудник, Проскудина Галина Юрьевна, научный сотрудник, Овдей Ольга Михайловна, младший научный сотрудник. Место работы авторов: Институт программных систем НАН Украины, 03187, Киев-187, Проспект Академика Глушкова, 40. Тел. +38(044)526 6033 е-mail: reznich@isofts.kiev.ua kuzmaka@mail.ru gupros@isofts.kiev.ua olga.ovdiy@gmail.com