Всё сдал! - помощь студентам онлайн Всё сдал! - помощь студентам онлайн

Реальная база готовых
студенческих работ

Узнайте стоимость индивидуальной работы!

Вы нашли то, что искали?

Вы нашли то, что искали?

Да, спасибо!

0%

Нет, пока не нашел

0%

Узнайте стоимость индивидуальной работы

это быстро и бесплатно

Получите скидку

Оформите заказ сейчас и получите скидку 100 руб.!


Отображение АСД на СДХ

Тип Реферат
Предмет Информатика и программирование
Просмотров
962
Размер файла
29 б
Поделиться

Ознакомительный фрагмент работы:

Отображение АСД на СДХ

.

Наша задача :

1.Найти отображение АСД -> СДХ;

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

1. Отображения на вектор.

Будем предполагать что мы имеем дело с неотсортированными структурами. Подробно что означает условие сортированности мы рассмотрим в разделе IV "Сортировка."

1.1. Строка

Отображение строки на вектор строится так:

1. Возьмем антитранзитиное отношение R' такое что его транзитивное замыкание дает R (для этого достаточно рассмотреть отношение линейного порядка R без условия 2 - условия транзитивности :

если (a, b) и (b, c) принадлежат R, то (a, c) тоже принадлежит R;

Ясно что R' задает отношение соседства, т.е. (a,b) принадл. R' если и только если

Не существ. c: c принадл. M , (a,c)принадл.R' и (c,b)принадл.R'

2.Возьмем минимальный элемент в строке (он существует в силу свойства отношения линейного порядка R); пусть это a;

3.Элементу a сопоставим первый компонент вектора: I(a)=1;

4.Паре (b,c)принадл.R' сопоставим I(c)=I(b)+1.

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

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

Рассмотрим сложность операций поиска, вставки, удаления и замены. Операции вставки, удаления и замены содержат операцию поиска как составную часть.

Предполагаем что частота встречаемости всех элементов в строке одна и та же. Тогда в среднем (когда мы имеем дело с множеством строк,а не с одной, двумя) нам придется просомтреть половину строки, чтобы найти нужный символ: (1/N)+(1/N)2+(1/N)3+...+(1/N)N= (N+1)/2 = ~N/2

Отсюда следует сложность поиска (количество операций сравнения) пропорциональна половине длины строки.

Для операции вставки сложность проворциональна длине строки. Действительно, нам надо N/2 сравнений, чтобы найти место для вставки, а затем N/2 сдвигов вправо, чтобы освободить место для нового элемента.

Сложность операции удаления равна сложности операции вставки. Рассуждения здесь аналогично предыдущим.

Нетрудно подсчитать сложность операции замены - N/2+1.

Основной вывод состоит в том, что при отображении строки на вектор все операции со строкой имеют линейную сложность, пропорциональную длине строки.

1.2. Граф (дерево)

Отображение графа на вектор строится через метрицу смежности или матрицу инцидентностей. В Pascal, где есть двумерные массивы такое представление графа очевидно. (См. представление лабиринта в задаче об Ариадне и Тезее.) При отображении на вектор возможно два подхода: отображение по строкам или по столбцам.

Здесь мы рассмотрим случай отображения по строкам. Случай отображения по столбцам полностью аналогичный. При отображении по строкам элементу матрицы A[i,j] сопоставляется элемент вектора V[k], где

k=(i-1)n + j, где n - длина строки.

Теперь оценим сложность операции поиска. Нам придется просмотреть в среднем половину строк - N/2, и половину элементов в каждой строке - N/2 при условии что часто встречаемости всех элементов одинакова. Таким образом сложность операции поиска пропорциональна N^2 /4 или N^2 при больших N.

Однако при оперции удаления нам не надо сдвигать все элементы как в случае со строкой. Однако, операция вставки трубет изменения размерности матрицы смежности по каждому измерению с N на N+1. Для этого нам придется выполнить (N+1) операций присваивания, чтобы заполнить новую строку в векторе, плюс N+1 сдвигов строк, чтобы добавить к каждой старой строке по новому элементу, соответствующему N+1 столбцу. Количество операций сдвига определяется следующим соотношением:

Таким образом сложность операции вставки будет равна

N^2/4 + N^3/2 = N^2(N+2)/2.

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

Для k-ичного дерева можно предложить специальный способ отображения на вектор. Компоненту V[0] сопоставляем корню дерева; компоненты V[1]...V[k] сопоставляем потомкам корня, затем с V[k+1] по V[2k] размещаем потомков V[1], с V[2k+1] - V[3k] - потомков V[2] и т.д. В общем случае потомки i-ой вершины, расположенной на j ярусе, будет размещаться в компонентах вектора

с V[k(k^j -1)/(k-1)+ (i-1)k] компонента

по V[k(k^j -1)/(k-1)+ ik] компонент.

Оценим сложность операции поиска при таком отображении дерева на вектор. Учитывая, что высота k-ичного дерева из N вершин равна

H = log (N(k-1)+1) - 1 ~log(k) N

получаем что число листьев в таком дереве ~ N^2. Отсюда, при условии равновстречаемости элементов в дереве, нам надо просмотреть в среднем половину путей (их число равно чмслу листьев в дереве) длины H каждый. Эти рассуждения дают нам величину

~ Nlog(k) N.

Сравнивая эту оценку с предыдущей для векторного представления графа N , можно увидеть что данное представление много эффективнее.

1.3. Стек

Поскольку стек есть мо существу единичное дерево все операции с которым осуществляются через корень, то отображение на стека на вектор достаточно очевидно. С вектором свзываем указатель p, который указывает на тот компонент вектора, где в данный момент размещается корень дерева. Изначально p=0. Операция вставки суть p:=p+1;V[p]:=<новый элемент>. Операция удаления: p:=p-1.

Самый важный вывод состоит в том, что операции над стеком при векторном представлении не зависят от длины стека.

1.4. Очередь

Для векторного представления очереди нам потребуются два указателя t и h для хвоста и головы очереди соотвественно. Напомним, что удаление элемента из очереди возможно только из головы очереди, а вставка - только из хвоста.

Одно из возможных отображений очереди на вектор состоит в том, что полагаем изначально h:=N; t:=N. Тогда изъятие элемента - h:=h-1; а вставка - t:=t-1. Такое отображение обладает тем недостатком, что если общее число элементов, прошедших через очередь - M>>N, при условии что длина очереди не более N, то после вставки N элементов мы исчерпаем длину вектора в указателе t.

Можно модифицировать этот метод - зафиксировать положение указателя h:=N. Тогда при изъятии элемента из очереди нам надо будет сдвигать все элементы на единицу вправо и корректировать значение указателя t. Чем больше средняя длина очереди, тем менее выгодно такое представление ( длина сдвига увеличивается).

Третий способ представления очереди через вектор состоит в том, что мы "загибаем" вектор в кольцо. Для этого достаточно выполнять все операции в указателями по модулю N. При таком представлении очереди сложность операций вставки и изъятия становятся совершенно не зависимыми от размера очереди.

1.5. Таблицы

Отображение таблиц на векторную память будет рассмотрено позднее в разделе "Таблицы".

Основным недостатком векторного представления АСД - ограниченность длины вектора. Ее мы должны знать заранее. Кроме этого, как мы видели достаточно часто нам приходится двигать компоненты вектора при вставке и удалении элементов в векторе.

2. Представление АСД в списковой памяти

2.1. Понятие списка

Списком называется множество звеньев вида

|------------------------------------|

| тело ... | указатель на звено |

|------------------------------------|

увязанных в цепочку с помощью указателей друг на друга.

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

Каждая ссылка соотвествует ориентированной, упорядоченной паре в отношении некоторой структуры данных. Вдоль указателя можно двигаться только в одном направлении.

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

Основной недостаток списка - затраты памяти на хранение указателей. Чем сложнее структура - тем больше указателей надо для ее представления, тем больше памяти расходуется под указатели.

Основное достоинство - неограниченности по размеру, динамичность в управлении и организации.

2.2. Представление строк

Для представления строк можно использовать звенья со следующими видами поля тело:

- односимвольные звенья;

- многосимвольные звенья;

- звенья переменной длины (в Pascal где динамические структуры переменной длины не поддерживаются этого вида звенья не эффективны);

По организации поля указатель на другое звено:

-однонаправленные;

-двунаправленные;

-мультиссылочные (когда один элемент структуры связан с несколькими другими элементами).

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

2.3. Представление графов

При представлении графов можно использовать несколько подходов:

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

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

- наконец можно ввести два вида звеньев один для представления дуг, другой для представления вершин; звенья-дуги увязываются в список, звенья-вершины также увязываются в список с перекрестными ссылками между списками.

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

2.4. Представление стека и очереди

Стек представляется однонапрвленным списком из звеньев, состоящих из двух полей: тела и ссылки. Ниже приводятся процедуры, реализующие операции загрузки в и выгрузки из стека.

type

звено = record тело: char; следующий:связь end;

связь = Iзвено;

var тело:char;

стек:связь;

procedure загрузить (тело:char;var стек:связь);

var элемент:связь;

begin new(элемент); элементI.тело:=тело;элементI.следующий:=стек;

стек:=элемент

end{загрузить}

procedure выгрузить (var тело:char;var стек:связь);

var использованный:связь;

begin ifnot(стек = nil) then

begin тело := стекI.тело; использованный:= стек;

стек:=стекI.следующий; dispose(использованный) end

else write ('стекпуст')

end{загрузить}

Обратите внимание на значение оператора dispose.

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

Структуры данных

АСД (абстрактные структуры данных) - математическая структура, с помощью которой мы представляем прикладные данные программы.

АЛГОРИТМ ------> ЯЗЫК ПРОГРАММИРОВАНИЯ

В каждом языке программирования существует своя концепция данных.

Назовем структуры данных конкретного ЯП структурой данных хранения (СДХ).

ПРОБЛЕМА: как отобразить АСД алгоритма на СДХ ЯП ?

Над "АСД определены некоторые операции (удалить, заменить элемент и т.д.)

Критерием выбора СДХ является сложность. Следует выбирать как можно более простые СДХ.

ЗАДАЧА. Дано: АСД и набор СДХ.

Требуется: построить АСД -----> СДХ так, чтобы сложность пераций с СДХ (аналогичных операциям с АСД) была минимальной.

Определение: Отношением порядка R на множестве M называют множество пар, обладающих следующими свойствами:

1) рефлексивность: (a,a) Î R {a £ a}

2) транзитивность: a £ b, b £ c Þ a £ c

3) антисимметричность: a £ b, b £ a Þ a = b

если отношение не обладает свойством 3), то R - предпорядок

Отношение строгого порядка, если в п. 3) (a,b) Î R Þ (b,a) Ï R

R - линейный порядок, если R определено для "a и b и R является строгим порядком.

Некоторое множество частично упорядочено, если на нем зафиксирован некоторый порядок, т.е. на множестве существуют несравнимые величины.

Структура G на множестве M - пара (R,M), где R отношение порядка на множестве M.

Примеры: множество натуральных чисел - структура,

множество слов - структура

Индексация I - отображение M на отрезок [ 1..½M½].

Абстрактные структуры данных

Строка Граф Дерево Стек Очередь Таблица

Строка

Строка - конечное множество символов с отношением линейного порядка. Значит для каждого символа мы знаем предшествующий и последующий символы.

Примеры строк: текст, формулы без индексов и др.

Свойства строк:

- переменная длина,

- обращение к элементам строки идет в соответствии с отношением линейного порядка, а не в соответствии с индексацией на этом множестве.

(L,M) I: M Þ [1..ôMô]

- часто строка имеет дополнительную структуру - синтаксис.

Операции:

- поиск символа,

- вставка символа,

- удаление символа,

- замена символа.

Граф

Графом гамма называются пары (X,U), где X - множество, U- отношение порядка на X (X - частично упорядоченное множество).

Если U - просто порядок, то граф - ориентирован, в силу свойства антисимметричности.

Если U - предпорядок, то граф неориентированный.

Пару (a,b) соединяют дугой, если пара (a,b) Î множеству U.

Граф гамма называется взвешанным, если каждой дуге мы сопоставляем некоторое вещественное число, называемое весом данной дуги.

m: UÞR

Граф гамма - размеченный, если задано некоторое отображение

h: X Þ A, где A - множество меток.

ПРИМЕРЫ: 1) сеть дорог (вес - расстояние, метка - название населенного пункта). Найти кратчайший путь из п.A в п.B.

2) Найти электрические характеристики в различных участках электрической цепи.

Способы задания графа:

- графический,

- применение матрицы смежности

½x½ = n; X...X

.

X

ì 1, (X, X) Î U

S = í

î 0, (X, X) Ï U

- применение матрицы инцедентности

U...U (дуги)

X

.

X

(Вершины)

ì 1, если X инцендентно U и Xявляется концом дуги U

s = í -1, если X инцендентно U и Xявляется началом дуги U

î 0, в противном случае.

Степень вершины - число дуг входящих (в) и выходящих (из) данной вершины (инцендентных данной вершине).

Степень захода (исхода) - число дуг входящих (выходящих) в (из) данную вершину.

Граф называется регулярным, если степень его вершин постоянна.

Последовательность вершин графа X...Xназывается цепью, если для

" (X, X) Î U, т.е. существуют дуги по которым можно перейти от X к X, от X к X и т.д.

Последовательность вершин графа называется путем, если для

" (X, X) Î U или (X, X) Î U.

Всякая цепь - путь, но не всякий путь - цепь.

Если в цепи X=X, то такая цепь называется цикл.

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

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

Вес пути X ... X - сумма весов дуг этого пути.

m (X ... X) =m (x, x)

Операции:

- вставить вершину,

- удалить вершину,

- вставить дугу,

- удалить дугу и т.д.

С точки зрения графа строка это цепь.

Дерево

Дерево - связный ациклический граф.

Одна вершина в дереве обязательно имеет степень захода 0. Эта вершина - корень дерева. Листья дерева - вершины, имеющие степень исхода равную 0.

Для любой вершины дерева (кроме корня) степень захода равна 1.

Деревья могут быть ориентированные и неориентированные.

Высота дерева (H) - самый длинный путь из корня к листу.

Рекурсивное определение: Множество из одной вершины - дерево.

Если T ... T - деревья, то

Дерево называется k-ичным, если все вершины имеют степень исхода k.

Дерево называется линейным, степень исхода равна 1.

ЗАДАЧА. Подсчитать количество деревьев, имеющих n вершин.

РЕШЕНИЕ. B - число деревьев из i вершин. Следуя рекурсивному определению дерева:

Þ

Дерево совершенное, если любой путь от корня к листу отличается не более чем на 1 от самого длинного пути.

Совершенное дерево из n вершин имеет минимальную высоту.

Свойства совершенных деревьев:

- составляют минимальную часть всех деревьев,

- все пути от корня к листу равноправны.


Нет нужной работы в каталоге?

Сделайте индивидуальный заказ на нашем сервисе. Там эксперты помогают с учебой без посредников Разместите задание – сайт бесплатно отправит его исполнителя, и они предложат цены.

Цены ниже, чем в агентствах и у конкурентов

Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит

Бесплатные доработки и консультации

Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки

Гарантируем возврат

Если работа вас не устроит – мы вернем 100% суммы заказа

Техподдержка 7 дней в неделю

Наши менеджеры всегда на связи и оперативно решат любую проблему

Строгий отбор экспертов

К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»

1 000 +
Новых работ ежедневно
computer

Требуются доработки?
Они включены в стоимость работы

Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован

avatar
Математика
История
Экономика
icon
159599
рейтинг
icon
3275
работ сдано
icon
1404
отзывов
avatar
Математика
Физика
История
icon
156450
рейтинг
icon
6068
работ сдано
icon
2737
отзывов
avatar
Химия
Экономика
Биология
icon
105734
рейтинг
icon
2110
работ сдано
icon
1318
отзывов
avatar
Высшая математика
Информатика
Геодезия
icon
62710
рейтинг
icon
1046
работ сдано
icon
598
отзывов
Отзывы студентов о нашей работе
63 457 оценок star star star star star
среднее 4.9 из 5
Тгу им. Г. Р. Державина
Реферат сделан досрочно, преподавателю понравилось, я тоже в восторге. Спасибо Татьяне за ...
star star star star star
РЭУ им.Плеханово
Альберт хороший исполнитель, сделал реферат очень быстро, вечером заказала, утром уже все ...
star star star star star
ФЭК
Маринаааа, спасибо вам огромное! Вы профессионал своего дела! Рекомендую всем ✌🏽😎
star star star star star

Последние размещённые задания

Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн

Подогнать готовую курсовую под СТО

Курсовая, не знаю

Срок сдачи к 7 дек.

только что
только что

Выполнить задания

Другое, Товароведение

Срок сдачи к 6 дек.

1 минуту назад

Архитектура и организация конфигурации памяти вычислительной системы

Лабораторная, Архитектура средств вычислительной техники

Срок сдачи к 12 дек.

1 минуту назад

Организации профилактики травматизма в спортивных секциях в общеобразовательной школе

Курсовая, профилактики травматизма, медицина

Срок сдачи к 5 дек.

2 минуты назад

краткая характеристика сбербанка анализ тарифов РКО

Отчет по практике, дистанционное банковское обслуживание

Срок сдачи к 5 дек.

2 минуты назад

Исследование методов получения случайных чисел с заданным законом распределения

Лабораторная, Моделирование, математика

Срок сдачи к 10 дек.

4 минуты назад

Проектирование заготовок, получаемых литьем в песчано-глинистые формы

Лабораторная, основы технологии машиностроения

Срок сдачи к 14 дек.

4 минуты назад

2504

Презентация, ММУ одна

Срок сдачи к 7 дек.

6 минут назад

выполнить 3 задачи

Контрольная, Сопротивление материалов

Срок сдачи к 11 дек.

6 минут назад

Вам необходимо выбрать модель медиастратегии

Другое, Медиапланирование, реклама, маркетинг

Срок сдачи к 7 дек.

7 минут назад

Ответить на задания

Решение задач, Цифровизация процессов управления, информатика, программирование

Срок сдачи к 20 дек.

7 минут назад
8 минут назад

Все на фото

Курсовая, Землеустройство

Срок сдачи к 12 дек.

9 минут назад

Разработка веб-информационной системы для автоматизации складских операций компании Hoff

Диплом, Логистические системы, логистика, информатика, программирование, теория автоматического управления

Срок сдачи к 1 мар.

10 минут назад
11 минут назад

перевод текста, выполнение упражнений

Перевод с ин. языка, Немецкий язык

Срок сдачи к 7 дек.

11 минут назад
planes planes
Закажи индивидуальную работу за 1 минуту!

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

«Всё сдал!» — безопасный онлайн-сервис с проверенными экспертами

Используя «Свежую базу РГСР», вы принимаете пользовательское соглашение
и политику обработки персональных данных
Сайт работает по московскому времени:

Вход
Регистрация или
Не нашли, что искали?

Заполните форму и узнайте цену на индивидуальную работу!

Файлы (при наличии)

    это быстро и бесплатно