2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Дискретная математика(Хранение множеств)
Сообщение25.03.2008, 20:50 


25/03/08
43
Как хранить подмножества множества {1..n}, используя память O(n)? При этом действуют следующие ограничения на время выполения операций:
Сделать пустым Cn
Проверить принадлежность C
Добавить C
Удалить Cn
Минимальный элемент C
Проверка пустоты C

Никак не могу сообразить, в чем это можно хранить? Подскажите немного )

 Профиль  
                  
 
 
Сообщение25.03.2008, 20:58 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
Используйте массив длины $n$, хранящий индикаторы принадлежности элемента к подмножеству, а также дополнительно - значение минимального элемента подмножества, который также является индикатором пустоты.

 Профиль  
                  
 
 
Сообщение25.03.2008, 21:16 


27/06/07
95
PAV писал(а):
а также дополнительно - значение минимального элемента подмножества, который также является индикатором пустоты.


У нас есть массив из n эл-тов и мы еще где-то должны хранить этот индикатор?

 Профиль  
                  
 
 
Сообщение25.03.2008, 21:17 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
Да

 Профиль  
                  
 
 
Сообщение25.03.2008, 21:18 


27/06/07
95
так у нас же память O(n), это и есть сам массив. Или я что-то не понимаю?

 Профиль  
                  
 
 
Сообщение25.03.2008, 21:21 


25/03/08
43
в таком случае "Удалить" у нас вроде выполняется за время С?

 Профиль  
                  
 
 
Сообщение25.03.2008, 21:25 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
Что такое O(n)? Дайте, пожалуйста, определение.

Опишите алгоритм удаления элемента, как Вы его видите.

 Профиль  
                  
 
 
Сообщение25.03.2008, 21:36 


25/03/08
43
Удаление элемента - как я понимаю - поменять индикатор принадлежности

 Профиль  
                  
 
 
Сообщение25.03.2008, 21:38 


27/06/07
95
а что такое O(n)? Вероятно, мои знания ошибочны

 Профиль  
                  
 
 
Сообщение25.03.2008, 22:14 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
kdm писал(а):
Удаление элемента - как я понимаю - поменять индикатор принадлежности


А как же минимальный элемент, который хранится отдельно?

Добавлено спустя 4 минуты:

kerz-3-06 писал(а):
а что такое O(n)? Вероятно, мои знания ошибочны


Функция $f(n)$ является O(n), если $\frac{f(n)}{n}$ ограничено некоторой константой. Проще говоря, $f(n)$ растет не быстрее, чем пропорционально $n$.

 Профиль  
                  
 
 
Сообщение25.03.2008, 22:20 


25/03/08
43
я не совсем понял где хранится этот минимальный элемент....Остальное вроде более менее понятно

 Профиль  
                  
 
 
Сообщение25.03.2008, 22:33 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
В еще одной ячейке памяти, дополнительной к существующим $n$ ячейкам.

 Профиль  
                  
 
 небольшое усложнение
Сообщение25.03.2008, 22:47 


22/06/05
164
Если вдруг захочется ещё подобных задач, то вот небольшое усложнение: чтобы удаление элемента тоже происходило за ограниченное время.

 Профиль  
                  
 
 Re: небольшое усложнение
Сообщение25.03.2008, 23:37 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
Егор писал(а):
Если вдруг захочется ещё подобных задач, то вот небольшое усложнение: чтобы удаление элемента тоже происходило за ограниченное время.


Честно говоря, я не могу сообразить как. Тогда у меня получается, что добавление становится O(n).

 Профиль  
                  
 
 виноват, погорячился
Сообщение26.03.2008, 19:59 


22/06/05
164
PAV писал(а):
Честно говоря, я не могу сообразить как. Тогда у меня получается, что добавление становится O(n).

Да, это я погорячился. Вряд ли можно сделать добавление элемента, удаление элемента и значение минимального элемента за O(1). Представлял себе массив указателей на узлы отсортированного двусвязного списка, но тогда, действительно, добавление будет за время O(n).

Говорят, будто куча Фибоначчи обеспечивает добавление за O(1) и удаление за O(log(n)).

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group