Контроль і діагностика програмних систем

Міністерство освіти і науки

Відкритий міжнародний університет розвитку людини ”Україна”

Лабораторна робота №1

З предмету:

Контроль і діагностика програмних систем

На тему:

Перевірка коду на парність

Виконала

студентка групи ПА-41

Руденко О.М.

Перевірив викладач

Капшук О.О.

Київ – 2010

Лабораторна робота №1

Теоретична частина

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

Найпростіший код з перевіркою на парність полягає в тому, що ми дописуємо до послідовності з нулів та одиниць, яку збираємося пропустити через канал зв’язку, ще один символ (0 або 1) так, щоб загальна кількість одиниць стала парною. Наприклад до слова 00101 дописуємо 0, а до слова10101 дописуємо 1. одержуємо довші слова 001010 та 101011, які передаємо. На виході з каналу зв’язку спочатку підраховують парність кількості входжень одиниць в одержаному слові. Якщо ця кількість парна, то роблять висновок, що помилки при передачі не з’явилося, а процес декодування полягає просто у закресленні останнього символу в одержаному слові. Якщо ж кількість одиниць в одержаному слові виявилась непарною, то можна лише зробити висновок, що при передачі з’явились помилки, але не можна відновити передане слово. Кажуть, що такий код виявляє помилки, тоді як розглянутий вище код з повтореннями не лише їх виявляє, а й виправляє.

Розглянутий код дуже елементарний, тому має серйозні недоліки. Предмет теорії кодування полягає у створенні досконаліших кодів, які б об’єднували переваги і не мали недоліків щойно розглянутих кодів.

Практична частина

1 Запишемо усі інформаційні розряди в комірки B11 : I11.

2. У комірку J11 запишемо формулу для підрахунку парності або непарності одиниць в інформаційних розрядах - =ОСТАТ(СУММ($B11:$I11)+1;2) .

Формула записує 1 в розряд контролю, якщо кількість одиниць в інформаційних полях парна або 0 - якщо непарна.

3 Аналогічно заповнюємо комірки B19 : J19

4. Почергово вносимо однократну, двократну та трьохкратну помилки.

5. З наведених результатів видно програма в змозі знаходити непарну кількість помилок, але не здатна знаходити парну кількість

Висновок

Під час виконання роботи я засвоїла основні методи контролю помилок.

Міністерство освіти і науки

Відкритий міжнародний університет розвитку людини ”Україна”

Лабораторна робота №2

З предмету:

Контроль і діагностика програмних систем

На тему:

Построение груповых кодов и их применение для обнаружения и исправления ошибок

Виконав студент групи ПА-41

Руденко О.

Перевірив викладач

Капшук О.О.

Київ – 2010

Лабораторна робота №2

Теоретична частина

Лінійним блоковим (n,k) кодом – називається безліч N послідовностей довжини n над GF(q), званих кодовими словами, які характеризується тим, що сума двох кодових слів є кодовим словом, а твір будь-якого кодового слова на елемент поля також є кодовим словом.

Зазвичай N=qk, де до - деяке ціле число. Якщо q=2, лінійні коди називаються груповими, оскільки кодові слова утворюють математичну структуру, звану групою. При формування цієї коди лінійною операцією є підсумовування по mod2.


Способи завдання лінійних кодів

1. Перерахуванням кодових слів, тобто складанні списку всіх кодових слів коди.

Приклад. У таблиці 1 представлені всі кодові слова (5,3) - коди (ai - інформаційні, а bi - перевірочні символи).

Таблиця 1

a1

a2

a3

b1

b2

1

0

0

1

1

0

2

0

1

0

1

1

3

0

1

1

0

1

4

1

0

0

0

1

5

1

0

1

1

1

6

1

1

0

1

0

7

1

1

1

0

0

8

0

0

0

0

0

2. Системою перевірочних рівнянь, що визначають правила формування перевірочних символів по відомих інформаційних:

де

j - номер перевірочного символу;

i - номер інформаційного символу;

hij - коефіцієнти, що приймають значення 0 або 1 відповідно до правил формування конкретних групових код.

Приклад. Для коди (5,3) перевірочні рівняння мають вигляд:

b1= a2 + a3;

b2= a1 + a2.

3. Матричне, засноване на побудові матриць, що породжують і перевірочної.

Векторний простір Vn над GF(2) включає 2n векторів (n-последовательностей), а підпростором його є множина з 2k кодових слів довжини n, яке однозначно визначається його базисом, що складається з до лінійно незалежних векторів. Тому лінійний (n,k) - код повністю визначається набором з до кодових слів, що належать цьому коду. Набір з до кодових слів, відповідних базису, зазвичай представляється у вигляді матриці, яка називається такою, що породжує.

Приклад. (5,3) - код, який був представлений в таблиці 1, може бути заданий матрицею

Решта кодових слів виходить складанням рядків матриць в різних поєднаннях.

Загальна кількість різних варіантів що породжують матрицю визначається виразом

Для виключення неоднозначності в записі G(n,k) вводять поняття про канонічну або систематичну форму матриці, яка має вигляд

де

Ik - одинична матриця, що містить інформаційні символи;

Rk,r - прямокутна матриця, складена з перевірочних символів.

Приклад. Матриця, що породжує, в систематичному вигляді для (5,3) - коди

Матриця G>(>>n>>,>>k>>)>, що породжує, в систематичному вигляді може бути отримана з будь-якої іншої матриці за допомогою елементарних операцій над рядками (перестановкою двох довільних рядків, заміною довільного рядка на суму її самій і ряду інших) і подальшою перестановкою стовпців.

Перевірочна матриця в систематичному вигляді має вигляд

де Ir - одинична матриця; - прямокутна матриця в транспонованому виді матриці Rk,r з матриці, що породжує.

Приклад. Перевірочна матриця (5,3) - коди

Практична частина

1. Запишемо генеруючу матрицю.

кол строк = длине инфор = 4

1

0

0

0

1

0

1

G 7,4 =

0

1

0

0

1

1

1

0

0

1

0

0

1

1

0

0

0

1

1

1

0

информационая часть = 10 => 1 0 1 0

X =

1

0

1

0

1

1

0

2. На основі неї створимо перевірочну.

кол строк =
длине пров
= 3

1

1

0

1

1

0

0

H =

0

1

1

1

0

1

0

1

1

1

0

0

0

1

3. Запишемо наші інформаційні поля та згенеруємо перевірочні поля.

Х=

1

0

1

0

1

0

1

исползуя соотношение H * X^T = S

если S = 0 то ош в код комб нет

в прот случ с имеет вид

s1

1

результат декодиров

S =

s2

0

s3

0

error

4. Внесемо помилку.

X =

1

0

1

0

0

1

0

5. Ми отримали скореговане значення.

1

0

1

0

1

1

0

s1

0

результат декодиров

S =

s2

0

s3

0

знач верно

Висновок

Під час виконання роботи я написала програму що виявляє та виправляє однократну помилку в повідомленні, а також знаходить багатократні помилки.

Міністерство освіти і науки

Відкритий міжнародний університет розвитку людини ”Україна”

Лабораторна робота №3

З предмету:

Контроль і діагностика програмних систем

На тему:

Коди Хемминга

Виконала студентка групи ПА-41

Руденко О.

Перевірив викладач

Капшук О.О.

Київ – 2010

Теоретична частина

Практична частина

Проверочная матрица для кода Хемминга

кол строк =
длине инфор. = 4

0

0

0

0

0

0

0

1

1

1

1

1

1

1

1

H 15,4 =

0

0

0

1

1

1

1

0

0

0

0

1

1

1

1

0

1

1

0

0

1

1

0

0

1

1

0

0

1

1

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1


перепишем ее, переставив столбцы с одной единицей в конец

a1

a2

a3

a4

a5

a6

a7

a8

a9

a10

a11

b1

b2

b3

b4

0

0

0

0

1

1

1

1

1

1

1

1

0

0

0

0

1

1

1

0

0

0

1

1

1

1

0

1

0

0

1

0

1

1

0

1

1

0

0

1

1

0

0

1

0

1

1

0

1

1

0

1

0

1

0

1

0

0

0

1

на ее основе создадим генерирующюю матрицу

информационая часть = 10 => 1 0 1 0

кол строк = длине инфор. = 4

1

0

0

0

0

0

0

0

0

0

0

0

0

1

1

0

1

0

0

0

0

0

0

0

0

0

0

1

0

1

0

0

1

0

0

0

0

0

0

0

0

0

1

1

0

0

0

0

1

0

0

0

0

0

0

0

0

1

1

1

0

0

0

0

1

0

0

0

0

0

0

1

0

0

1

G 15,4

0

0

0

0

0

1

0

0

0

0

0

1

0

1

0

0

0

0

0

0

0

1

0

0

0

0

1

0

1

1

0

0

0

0

0

0

0

1

0

0

0

1

1

0

0

0

0

0

0

0

0

0

0

1

0

0

1

1

0

1

0

0

0

0

0

0

0

0

0

1

0

1

1

1

0

0

0

0

0

0

0

0

0

0

0

1

1

1

1

1

Кодер

информационая часть = 10 => 1 0 1 0

0

0

0

0

0

0

0

1

0

1

0

X отпр =

0

1

0

0

0

0

0

0

0

0

0

1

0

1

0

Декодер

Х получ

0

1

0

0

0

0

0

0

0

0

0

1

0

1

0

исползуя соотношение H * X^T = S

если S = 0 то ош в код комб нет

в прот случ с имеет вид


результат декодиров

знач верно

s1

0

S =

s2

0

s3

0

s4

0


Скоректированое значение

0

1

0

0

0

0

0

0

0

0

0

1

0

1

0



Лаб. Робота 1





проверка на четность



















Кодер: записивает 1 в разряд контроля, если кол-во единиц в информациооных полях четное, 0 -если нечентное.

контроль на
Кодер

-добавляет контрольный розряд 0 или 1(в зависимости от надобности)


нечетность

Отправлено

информационные поля контроль контроль

1 1 1 0 1 0 0 1 1 0


0 1

Кодер: записивает 1 в разряд контроля, если кол-во единиц в информациооных полях четное, 0 -если нечентное. 1 0


Декодер





1 0

Получено
0 1

информационные поля контроль контроль

1 1 1 0 1 0 0 1 1 0

1 1

1 0


ОК Ошибка



минимальное кодовое растояние D = 2; задано условием




поступает на декодер который проверят всю кодовую комбинацию 9 розрядов

1 кратная ошибка 1 1 1 0 1 0 0 1 1 -- > Ошибка правильная комбинация

1 1 1 0 1 0 0 0 1 ошибочная


2 кратная ошибка 1 1 1 0 1 0 0 1 1 -- > ОК правильная комбинация

1 1 1 0 1 1 1 0 1 ошибочная


3 кратная ошибка 1 1 1 0 1 0 0 0 1 -- > Ошибка правильная комбинация

1 1 1 0 1 1 1 1 1 ошибочная


Программа находит неапрное кол-во ошибок. Парное НЕ находит. !!!