Сущность БД «Time_reception_preparations» имеет следующие атрибуты:
- id_time_reception - номер назначения по порядку, целочисленного типа;
- Время_приема_лекарственных_сре - возможные варианты приема лекарственных средств по времени, символьного типа.
Сущность БД «Harmful_habits» имеет следующие атрибуты:
- id_harmful_habits - номер вредных привычек пациента по порядку, целочисленного типа;
- Вредные привычки - вредные привычки пациента на данный момент, символьного типа.
Сущность БД «Diuresis» имеет следующие атрибуты:
- id_Diuresis - номер вредных привычек пациента по порядку, целочисленного типа;
- Диурез - Состояние диуреза у пациента на данный момент, символьного типа.
На этапе логического проектирования БД информационной системы цитоморфологобио-физической диагностики была разработана физическая модель схемы данных, основанная на реляционной модели (рис. 1).
Исходя из требований к информационному обеспечению, выбрана физическая модель, ориентированная на СУБД MS SQL Server 2008, так как она показывает наивысшее быстродействие[2].
4. Выводы
БД информационной системы цитоморфологоби-офизической диагностики разработана на основе реляционной модели, которая имеет простую и удобную для пользователя схему данных в виде таблиц. Она позволяет хранить необходимый набор текстовых, числовых и графических данных о пациенте, представить их в удобном, структурированном виде, с возможностью корректировки этих данных, а так же имеет возможность быстрого доступа к данным для их визуального отображения и проведения операций, связанных с их анализом и классификацией.
Литература
1. Проблема формализации текстовых данных в универсаль-
ных медицинских информационных системах / М.Ю. Болгов, Д.А. Микитенко // Украинский журнал телемедицины и медицинской телематики. - 2006. - Т.4, №2. - С.171-176.
2. Коннолли, Т. Базы данных. Проектирование, реализация и
сопровождение. Теория и практика. Database Systems: A Practical Approach to Design, Implementation, and Management Third Edition 3-е изд. / Т. Коннолли, К. Берг — М.: "Вильямс" 2003. — 1436 с. — ISBN 0-201-70857-4.
Дана загальна характеристика алгоритму. Дослиджено основш алгоритми пошуку плагiату тексту. Описано основт принципи роботи алгоритмiв
Ключовi слова: алгоритм, реалiзацiя,
програма, пошук
□-□
Дана общая характеристика алгоритма. Исследованы основные алгоритмы поиска плагиата текста. Описаны основные принципы работы алгоритмов
Ключевые слова: алгоритм, реализация,
программа, поиск
□-□
A general characteristic of the algorithm. The basic algorithms for finding plagiarism of text. The basic principles of the algorithms
Keywords: algorithm, implementation, program search
УДК 001.891:65.011.56
АЛГОРИТМИ ПОШУКУ
ПЛАГ1АТУ
А . А . Ч и ж о в а
Хaркiвський нaцiонaльний ушверситет рaдiоелектронiки просп. Лен^, 14, м. XapKiB, yKpaÏHa, 61166 Кон^кший тел.: 097-847-29-63 E-mail: Chijova_alla@ukr.net
1. Введення
Плапат - навмисне привласнення авторства чужого твору науки чи думок або мистецтва чи винаходи. Плапат може бути порушенням авторсько-правового законодавства та патентного законодавства i в 1х яко-си може спричинити за собою юридичну вщповщаль-
шсть. З шшого боку, плапат можливий i в областях, на яю не поширюеться дiя яких-небудь видiв штелек-туально! власносп, наприклад, в математищ та шших фундаментальних наукових дисциплшах.
Алгоритм - це система правил виконання обчис-лювального процесу, що обов'язково приводить до розв'язання певного класу задач тсля скшченного
числа операцш. При написанш комп'ютерних програм алгоритм описуе логiчну послiдовнiсть операцш. Для вiзуального зображення алгоритмiв часто використо-вують блок-схеми.
2. Алгоритми пошуку плагiату
Метод iдентифiкацiйних мгток. При пошуку плагiату потрiбно знаходити копи та частковi копи файлу у текстовш базi великого обсягу. У цьому випадку безпосередне порiвняння файлiв не ефективне.
Розглядаема технiка дозволяе перевести файл у б^ьш коротке подання: до документа зктавляеться набiр iдентифiкацiйних мiток, так щоб для близьких докуменпв цi набори перетиналися.
Побудову набору мгток для документа розглянемо на довшьному текстi: abracadabra
(вш складаеться з 11 символiв; m = 11) К-грамом називаються будь-якi к символи що стоять тдряд. Побудуемо всiлякi к-грами для цього тексту при, наприклад, к = 3:
abr, bra, rak, aka, kad, ada, dab, abr, bra Кшьюсть к-грамiв, яю можна побудувати для тексту довжини m позначимо n,
n = (m - (до - 1)) (у прикладд n = 9) (2.2)
Хешуемо ва к-грами, набiр хеш - значень (h1 ... hn) що вийшов характеризуе вихiдний документ. Для розглянутого тексту виходить така послщовшсть хеш - значень:
12, 35, 78, 3, 26, 48, 55, 12, 35
На практищ використовувати ва значення не до-щльно, тому вибирають невелику 1х кiлькiсть. Вибранi хеш - значення стають дрiбними документами [9]. Разом з самою мгткою збер^аеться iнформацiя про те, якому файлу вона належить i в якому мшщ цього файлу зустрь чаеться. Якщо хеш-функцiя гарантуе малу ймовiрнiсть колiзiй, то однакова мiтка у наборах двох файлiв сввд-чить про те, що у них е стльний тдрядок. За юльюстю загальних мiток можна судити про близьюсть файлiв.
Вибiр хеш - значень, яю будуть представляти документ:
- на1вний пiдхiд - вибрати кожне i-те з n значень. Проте, такий споаб не стшкий до вставлення та вида-лення символiв, змiни 1х порядку. Тому спиратися на позищю всерединi документа не можна;
- за Хайнце слщ призначити миками р - мжмаль-них хеш - значень, 1х кiлькiсть для всiх докуменпв буде постiйно. За допомогою цього методу можна знайти частковi копи, але вш добре працюе на файлах при-близно одного розмiру, знаходить схожi файли, може застосовуватися для класифжацп документiв;
- Манбер запропонував обирати в якосп миок тiльки тi хеш - значення, для яких h = 0 mod p, так зали-шиться тiльки n / р позначок. Однак, у цьому випадку вщстань мiж послiдовно вибраними хеш - значеннями не обмежена i може бути велика. У цьому разi зб™, яю опинилися мiж миками, не будуть врахованi;
- метод проиювання не мае цього недолжу. Алгоритм гарантуе, що якщо в двох файлах е хоч би один досить довгий загальний тдрядок, то як мжмум одна позначка у 1х наборах збiгаеться.
Алгоритм проаювання для побудови позначок. При пошуку загального тдрядка у файлах необхщно керуватися наступними умовами:
- якщо довжина тдрядка зб^аеться б^ьше або до-рiвнюe гарантовано! довжиш t, то збiг буде виявлено;
- збiг коротше шумового порогу к, ^норуеться.
Пункт 2 забезпечений вид^енням з тексту к-гра-
мiв. Чим бiльше к, тим менше ймовiрнiсть, що збiги випадковi. Але iз зростанням к падае стшюсть методу до перестановок. У художшх текстах зазвичай за к приймають середню довжину стiйких виразiв.
Щоб задовольнити пункт 1 необхщно, щоб кожний з послвдовно iдучих ^-к +1) хеш - значень хоча б одне було обрано як позначка.
1дея алгоритму: просуваемо вжно розмiру w = =(; - к + 1) вздовж послщовноси Ь1 ... Ьп, на кожному крощ вiкно перемiщаеться на одну позищю вправо. Призначаеться микою м^мальне hj у вiкнi.
Якщо у одному вшт два елементи приймають мшь мальне значення, правий призначаеться мггкою.
Алгоритм Хескела.
Нехай е двi програми, якi представлен у вигля-дi рядкiв токешв а i б вiдповiдно. Одним з критерпв подiбностi рядкiв вважаеться довжина найбiльшоi загально послвдовностг Завжди можна знайти такий елемент рядка а ^ що НОП рядюв а'= а| а | а |а |-1...аi а1... а1.1 i буде значно менше, шж НОП (а, б) (якщо НОП (а, б)> 1). Щоб уникнути цього явища можна скористатися алгоритмом порiвняння рядкiв Хескела, вiн вимагае деюлькох проходiв, але працюе за лшшне час [13]. Розбиваються рядка а i б на к-грами. Знаходяться и к-грами, яю зустрiчаються в а i б пльки по одному разу. Для кожно! тако! пари перевiряеться чи зб^аються елементи рядкiв, безпосередньо що лежать над ними; якщо це так, то проводиться та ж перевiрка i для них i так дал^ поки розбiжнiсть не як знайдено. Аналопчно для рядюв, що лежать нижче вщповвдних к-грамiв. Виходить набiр загальних непересiчних тдрядюв а i б. Тхня загальна довжина може служити мiрою схожост програм вiдповiдних а i б.
Переваги i недолiки.
Переваги:
- лшшна трудомiсткiсть алгоритму.
Недолiки:
- можлившть збiгу токенiзiрованного представлен-ня програм, але вщсутшсть збiгу в початкових кодах програм;
- невелика юльюсть ушкальних к-грамiв у великих програмах, ввдповвдно багато збiги, не мштять в собi к-грамiв будуть про^нороваш;
- вставка в знайдений блок або змша на семантич-но е^валентний оператора в багатьох випадках буде призводити до кнорування пе! частини блоку, в якiй не метиться унiкальний к-грам.
Колмогорiвськая складшсть у задачi знаходження плагiату.
Ввдстань мiж послiдовностями, засноване на теорп iнформацii:
d(x,y) = 1 -
K(x) - K(x|y) K(xy)
(2.5)
де K(x) - Колмогоровская складнiсть послщовносп х. Вона показуе скiльки шформацп мiстить послвдов-нiсть х. За визначенням, К(х) - довжина найкоротшо!
програми, яка на порожнш введення друкуе х, К(х|у) - кiлькiсть шформацп, отримано! х вiд у, якщо пусто, то воно дорiвнюе К(х); (К(х) - К(х|у)) - сюльки у «знае» про х. За визначенням, К(х|у) - це довжина найкорот-шо! програми, яка на введення у друкуе х.
Основна ввдмшшсть наведено! метрики вiд шших, що використовуються в задачах визначення плапату, полягае в ii ушверсальностк двi програми, близькi щодо будь-яко! iншоi метрики, будуть близькими i щодо дано!. Теоретично, детектор, заснований на та-кий метрицi, неможливо обдурити [15].
Процес порiвняння двох програм.
Спочатку проводиться токешзащя, далi запуска-еться алгоритм TokenCompress, заснований на алго-ритмi стиснення LZ. Першим д^ом вiн знаходить довжелезнмий неточно повторюваний пiдрядок, який закшчуеться в поточному символi; кодуе ii указником на попередне розмщення i зберiгае iнформацiю про внесенi поправки.
Реалiзацiя вiдрiзняеться вiд класичного LZ-стис-нення деякими особливостями, пов'язаними зi спе-цифiкою завдання: класичний алгоритм амейства LZ з обмеженим буфером може пропустити деяю довгi повторюваш пiдрядкiв через обмеження на розмiр словника пiд час кодування.
Це не страшно для кодування звичайних тексив, де потрiбно перш за все економити пам'ять i зменшувати час виконання, адже втрати якоси стиснення будуть украй малi.
Але в силу специфжи завдання i вибраного алгоритму ii ршення, який використовуе неточнi збiги, втрата навггь невеликоi кiлькостi довгих повторюва-них пiдрядкiв неприйнятна.
Псевдокод алгоритму:
Algorithm TokenCompress
Input: A token sequences
Output: Comp(s) and matched repeat pairs
i=0
An empty buffer B; while (i < s) { p = FindRepeatPair (i) { if (p.compressProfit > 0) { EncodeRepeatPair (p, compFile); i=i p.length;
OutputRepeatPair (p, repFile); } else {
AppendCharToBuffer (s i , B);
i++; }
}
EnodeLiteralZone (B, compFile); return Comp (s) = compFile.file_size; and repeat pairs stored in repFile.
Передбачаеться, що спочатку алгоритму швдаль зуемо словник усiма пiдстроками рядка у, а далi алгоритм залишаеться без змiн.
Класичнi алгоритми амейства LZ НЕ пiдтримують неточних збтв. Цей же алгоритм шукае неточно по-вторюванi пiдрядка та кодуе !х збiгу. TokenCompress використовуе порогову функщю, щоб визначити чи випдшше кодувати невiдповiдностi або краще скори-статися альтернативами.
Вiдповiдно, деякi HeT04Hi повтори можуть бути об'еднаш в один з невеликою юльюстю помилок. Неточно зб^лися пари пiдрядкiв записуються у файл i пiзнiше можуть бути переглянуи людиною.
На основi роботи цього алгоритму вважаеться d(x, y), яка потiм використовуеться для визначення на-скiльки ймовiрно те, що одна з цих програм е плапатом шший.
Переваги i недолiки.
Переваги:
- переваги токенiзiрованного подання;
- використовуеться евристичне наближення метрики, такий що, якщо двi програми, близью щодо будь-яко! шшо'! функцii вiдстанi, будуть близькими i щодо дано!;
- загальш пiдрядки, менше порогово! довжини кноруються, тому алгоритм не вiзьме до уваги малi випадково збiглися д^янки коду;
- при розбиттi ствпала дiлянки коду на двi i бiльше частини вставкою одного - деюлькох блокiв або одиночних операторiв, а також перестановкою найбiльшоi юлькоси незалежних операторiв, функцiя схожостi слабо змшюеться;
- вкрай висока стшюсть до вставцi операторiв;
- алгоритм нечутливий до перестановок великих фрагменив коду.
Недолж складаеться у тому що можливкть збiгу токенiзiрованного представлення програм, але вщсут-нi зб™ в початкових кодах програм.
Метод пошуку на XML уявлень.
Представлення програми у виглядi дерева вщобра-жае ii кориснi для пошуку плапату властивоси, i не враховуе даремш.
Метод пошуку плагiату, заснований на представ-леннi програми у виглядi дерева, опис якого зберь гаеться у форматi XML. Використання стандартних шструменпв для роботи з XML значно спрощуе архь тектуру детектора плапату.
Програми, написаш на процедурних мовах, таких як Pascal i С, добре структуроваш, тому отримати у XML поданш легко. Для оцiнки близькостi двох програм використовуються числовi матрищ, побудованi на основi XML опиав [16].
Побудова XML-уявлень.
У процедурних мовах програмування програма длиться на основш структурш блоки.
Елемент Block мштить вiдомостi про логiку управ-лiння у функцii. Усерединi нього Contents несе шфор-мацiю про операцп присвоення, виклики функцiй та шших незалежних операторах. Елемент Control Type збер^ае тип управлшня, внутршнш Block описуе на-ступний рiвень вкладеностi.
Вiдповiдне наведенiй схемi XML представлення програми виходить очевидним способом. За цим по-данням будуються числовi матрицi, що вiдображають структуру програми.
Матриця будови програми. Юльюсть N стовпщв в матрицi залежить вiд конкретноi мови програмуван-ня, передбачаеться, що воно достатньо велике.
Перший рядок цiеi матрицi зберiгае iнформацiю про тдключаються в програмi заголовних файлах. Bti можливi для даноi мови стандартш заголовки нумеруються числами. Якщо в конкретнш програмi використовуеться заголовок з номером i, то в першому
hi h2 hk hk+i hk+2 hn
gi g2 gk gk+i gk+2 gn
rii ri2 rik aii ai2 ain-k
lii li2 lik cii Ci2 cin-k
cdii cdi2 cdik cdik+i cdik+2 cdin
r2i r22 r2k a2i a22 a2n-k
l2i l22 l2k C2i C22 C2n-k
cd2i cdi2 cd2k cd2k+i cd2k+2 cd2n
rmi rm2 rmk ami am2 amn-k
lmi lm2 lmk Cmi Cm2 Cmn-k
cdmi cdm2 cdmk cdmk+i cdmk+2 cd mn
рядку структурно! матрищ на i - тому мшщ ставимо 1, у противному випадку - 0.
Другий рядок вщповвдае за глобальш змшш. Мож-ливi типи змiнних занумерован^ на i - тому мшщ у другому рядку матрицi варто юльюсть глобальних змiнних даного типу в програмь
Решта рядка в матрищ описують функцп, для кож-но1 з функцiй вiдводяться 2 рядки. У першш з них першi к стовпцiв вiдповiдають за тип, що повертаеться значення, стовпчики з (к + 1)-ого ставлять у вщповщ-нiсть можливим типам юльюсть аргументiв даного типу.
Аналопчно, у другому рядку, що описуе функщю, в першi к стовпцях зберкаеться iнформацiя про кiлькiсть локальних змшних даного типу, у стовпцях с (к + 1) на i-тому мшщ стоггь кiлькiсть керуючих операторiв даного типу.
Матриця управлшня програми. Ця матриця вщо-бражае лопку роботи програми, вона зберте посль довностi керуючих операторiв для кожно! з функцiй.
Цi послвдовноси можна витягти з XML представ-лення програми за допомогою стандартного шстру-менту XQuery.
Вiн аналiзуе XML i рекурсивно, подiбно алгоритмом пошуку в глибину, витягуе послщовшсть типiв операторiв управлiння.
Для кожно! функцii будуеться масив, в якому мь стяться номери операторiв управлiння в порядку слщування всерединi функцп.
Оцiнка близькостi програм.
На основi отриманих числових матриць, будуеться розширена матриця, яка мштить iнформацiю про структуру програми.
Де h вiдповiдае заголовками, g - глобальним змш-ним, rk - повертае значення, a - аргументiв, l - локаль-ним змiнним, c - типами управлiння, cdk представляе послщовшсть типiв операторiв управлiння к - пе! функцii [17].
Передбачаеться ощнити близькiсть двох програм.
Вони представлен матрицями А i В.
Порiвнюються матрицi по частинам, враховуючи iхнiй змiст.
«Стутнь схожостЬ» визначаеться юльюстю збiгiв, наприклад, для роздШв заголовкiв:
HeaderVal = A[1][1..n] х BT [1][1..n] =
= (hi h2 ...K-1 hn)x(hi'h2...h'n-i h'n)T =
= E(h* hi) = E bi (2.6)
Литература
1. Шаньгин, В.Ф. Защита компьютерной информации. Эффективные методы и средства // Издательский дом «Вильямс», 2008.
- 386 с.
2. Ворошвка, Г.К. «Генетичш алгоритми, штучнi нейронш мережi i проблеми вiртуальноi реальность» // ОСНОВА, 1997.
- 112 с.