Що означає пам'ять Θ (1)?


13

У мене є визначення алгоритму на місці від професора, але я його не розумію.

Алгоритми in-situ відносяться до алгоритмів, які працюють із Θ (1) пам'яттю.

Що це означає?



4
"Алгоритм, як кажуть, є алгоритмом in situ, або місцевим алгоритмом, якщо зайвий об'єм пам'яті, необхідний для виконання алгоритму, становить O (1), тобто [пам'ять] не перевищує константу незалежно від того, наскільки велика вхід . Наприклад, пірамідальна сортування є на місці алгоритму сортування «. en.wikipedia.org/wiki/In_situ#Computer_science
Auberon

@ Auberon, слід додати, що пред'являє ще одну вимогу, ніж O ( 1 ) : щоб загальна пам'ять, яка використовується в будь-якому конкретному виклику, не опускалася нижче постійної, незалежно від розміру вводу. Θ(1)O(1)
Олате

1
@Olathe Я ще не бачив алгоритм, який використовує більше нуля, але менше константи будь-якого ресурсу
adrianN

@adrianN, AES шифрування файлів проводиться з використанням оперативної пам'яті під постійною верхньою межею. Ви одночасно обробляєте блок, кожному блоку потрібно обробляти однакову кількість оперативної пам’яті, і оперативну пам’ять можна повторно використовувати з одного блоку в інший. Простішим прикладом є перетворення всіх літер у файлі, закодованому ASCII, у великі регістри. Ви можете прочитати файл, скажімо, 4096 байт, файлу, обробити 4096 байт, записати результати цього блоку і повторно використовувати ту саму ОЗУ для наступного блоку.
Олате

Відповіді:


13

Спочатку розпакуємо, що означає .Θ(1)

Big , і велика Θ , класи функцій. Там є формальне визначення тут , але для цілей даного питання, то ми говоримо , що функція F в O ( 1 ) , якщо існує постійна з , де для всіх х , е ( х ) C . Тобто f росте максимум так само швидко, як і постійну функцію.OΘfO(1)cxf(x)Cf

Big- не означає дуже багато для постійних функцій, тому що, описуючи алгоритм використання часу або простору, він не набагато нижче постійного. Але пояснити, що це означає, f Θ ( 1 ), якщо є деякі константи c , d такі, що для всіх x , d f ( x ) c . Тобто f росте як мінімум так само швидко, і щонайбільше так швидко, як постійна функція.ΘfΘ(1)c,dxdf(x)cf

А що це стосується використання пам'яті? Розглянемо деякий алгоритм . Існує деяка (математична) функція, яка при введенні n дає максимальне використання пам'яті вашого алгоритму A на будь-якому вході розміром n . Назвемо цю функцію m e m .AnAnmem

Отже, зараз ми поєднуємо наші дві концепції. Якщо алгоритм використовує пам'ять, то його функція використання пам’яті знаходиться в Θ ( 1 ) , це означає, що існує деяка d , c така, що для будь-якого вводу використовується пам'ять між d і c .Θ(1)Θ(1)d,cdc

Коротше кажучи, це означає, що використання пам'яті алгоритму знаходиться в деякому постійному діапазоні, незалежно від введення.

Θ(n)


"фактично не залежить від його вкладу." - для якого визначення "ефективно"?
Рафаель

Як і в, використовувана пам'ять може змінюватися залежно від входу, але лише протягом фіксованого інтервалу. Не соромтесь відредагувати його, якщо ви можете придумати кращу формулювання.
jmite

dc

Прості ілюстративні приклади будуть корисними
vzn

8

Постійна складність алгоритму простору

Кількість пам'яті, яку використовує ваш алгоритм, не залежить від введення даних.

1010

Однак алгоритми In-situ виконують призначену функцію на самому вході і, таким чином, вимагають зовсім небагато місця або не вимагають його. Введення, як правило, перезаписується виведенням під час виконання алгоритму. ( ref )

Алгоритми in-situ не враховують простір, який займає вхід, і враховують лише додатковий простір, обчислюючи складність простору.


3
Θ(1)

@Olathe Простір, зайнятий кожним входом у перерахунку на байти та кількість вхідних даних у перерахунку, чи не є двома різними поняттями?
Prateek

0

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


2
ΘOΩO(x2)f(x)=3x2 f(x)=xΘ(x2)f(x)=3x2f(x)=x
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.