Комп'ютерна наука

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

11
Чому на практиці кращий кіксорт, ніж інші алгоритми сортування?
У звичайному курсі алгоритмів нас вчать, що в середньому швидкості є а в гіршому - . Одночасно вивчаються інші алгоритми сортування, які є у гіршому випадку (наприклад, злиття та велика частина ), і навіть лінійний час у кращому випадку (як бульбашка ), але з деякими додатковими потребами пам'яті.O ( n …

7
Яке визначення , , -повне та тверде?
Я перебуваю в курсі обчислення та складності , і не можу зрозуміти, що означають ці терміни. Все, що я знаю, це те, що NP - це підмножина NP-Complete, яка є підмножиною NP-hard, але я поняття не маю, що вони насправді означають. Вікіпедія теж не дуже допомагає, оскільки пояснення все ще …

29
Чому запис математичних доказів є більш відмовними, ніж написання комп'ютерного коду?
Я помітив, що мені набагато простіше записати математичні докази, не допускаючи помилок, ніж записати комп’ютерну програму без помилок. Здається, це щось більш поширене, ніж просто мій досвід. Більшість людей роблять програмні помилки весь час у своєму програмуванні, і у них є компілятор, який би їм говорив, у чому полягає помилка. …

10
Як мова, чий компілятор написаний на C, коли-небудь може бути швидшою за C?
Переглянувши веб-сторінку Джулії , ви можете побачити деякі орієнтири з декількох мов через декілька алгоритмів (терміни, показані нижче). Як мова з компілятором, спочатку написаним на C, перевершує код C? Малюнок: еталонні часи щодо C (менший, тим краще, продуктивність C = 1,0).

3
Чи існує система, що стоїть за магією аналізу алгоритму?
Є багато запитань щодо того, як проаналізувати час виконання алгоритмів (див., Наприклад, час виконання та алгоритм аналізу ). Багато з них схожі, наприклад, ті, хто запитує аналіз витрат вкладених циклів або алгоритмів ділення та підкорення, але, здається, більшість відповідей зроблені спеціально. З іншого боку, відповіді на інше загальне запитання пояснюють …

12
Чому насправді проблема зупинки настільки важлива?
Я не розумію, чому проблема зупинки часто використовується для відхилення можливості визначити, чи припиняється програма. У Вікіпедії [стаття] [1] правильно пояснюється, що детермінована машина з обмеженою пам'яттю або зупинить, або повторить попередній стан. Ви можете використовувати алгоритм, який визначає, чи пов'язаний цикл списку реалізує функцію зупинки з складністю простору O …

3
Як можна визначити, чи має
Нам дали наступну вправу. Дозволяє f( n ) = { 100н зустрічається в десятковому поданні πщеf(н)={10н зустрічається в десятковому поданні π0ще\qquad \displaystyle f(n) = \begin{cases} 1 & 0^n \text{ occurs in the decimal representation of } \pi \\ 0 & \text{else}\end{cases} Доведіть, що обчислюється.fff Як це можливо? Наскільки я знаю, …

12
Чому так багато мов програмування?
Я досить добре володію C / C ++ і можу обійтись різними мовами сценаріїв (awk / sed / perl). Я почав використовувати python набагато більше, тому що він поєднує в собі деякі найтонші аспекти C ++ з можливостями сценарію awk / sed / perl. Але чому так багато різних мов …

14
Чому я можу переглянути графік і відразу знайти найближчу точку до іншої точки, але це потребує часу O (n) через програмування?
Дозвольте уточнити: З огляду на розкид деякої кількості точок n, якщо я хочу подумки знайти найближчу точку до будь-якої точки сюжету, я можу негайно ігнорувати більшість точок на графіку, звужуючи свій вибір до деякої невеликої постійної кількості точок поблизу . Однак у програмуванні, заданому набором точок n, для того, щоб …

6
Чи корисна теорія категорій для вивчення функціонального програмування?
Я вивчаю Haskell і мене захоплює мова. Однак у мене немає серйозного математичного або CS курсу. Але я досвідчений програмний програміст. Я хочу вивчити теорію категорій, щоб я міг стати кращим у Haskell. Які теми в теорії категорій я повинен навчитися, щоб забезпечити хорошу основу для розуміння Хаскелла?

4
Як перетворити кінцеві автомати в регулярні вирази?
Перетворення регулярних виразів у (мінімальний) NFA, які приймають ту саму мову, легко за допомогою стандартних алгоритмів, наприклад алгоритму Томпсона . Інший напрямок, здається, є більш втомливим, але іноді отримані вирази є безладними. Які алгоритми існують для перетворення NFA в еквівалентні регулярні вирази? Чи є переваги щодо часової складності чи розміру …

6
Чому не існував алгоритм шифрування, заснований на відомих проблемах NP-Hard?
Більшість сучасних шифрувань, таких як RSA, покладаються на цілочисельну факторизацію, яка, як вважається, не є важкою проблемою для NP, але вона належить до BQP, що робить її вразливою для квантових комп'ютерів. Цікаво, чому не існував алгоритм шифрування, який базується на відомій важкій проблемі NP. Звучить (принаймні теоретично) так, що це …

13
Як обдурити евристику "спробувати деякі тестові випадки": Алгоритми, які здаються правильними, але насправді є невірними
Щоб спробувати перевірити правильність алгоритму для якоїсь проблеми, звичайним початковим пунктом є спробувати запустити алгоритм вручну на декількох простих тестових випадках - спробуйте його на кількох прикладах проблемних випадків, включаючи кілька простих "кутових випадків" ". Це чудова евристика: це чудовий спосіб швидко вилучити багато неправильних спроб алгоритму та зрозуміти, чому …

2
БІТ: Яка інтуїція стоїть за двійковим індексованим деревом і як про нього думали?
Двійкове індексоване дерево має майже меншу або відносно відсутність літератури порівняно з іншими структурами даних. Єдине місце, де його викладають - це навчальний посібник із кращих кодерів . Хоча підручник є повним у всіх поясненнях, я не можу зрозуміти інтуїцію за таким деревом? Як це було винайдено? Що є фактичним …

5
Як не вирішити P = NP?
Існує багато спроб довести або або P ≠ N P , і, природно, багато людей замислюються над цим питанням, маючи ідеї довести будь-який напрямок.P=NPП=NП\mathsf{P} = \mathsf{NP} P≠NPП≠NП\mathsf{P} \neq \mathsf{NP} Я знаю, що є підходи, які, як було доведено, не працюють, і, мабуть, більше таких, які мають історію невдач. Також, здається, …

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.