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

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

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

9
Чому додавання таке швидке, як бітові операції в сучасних процесорах?
Я знаю, що розрядні операції настільки швидкі на сучасних процесорах, оскільки вони можуть працювати 32 або 64 біти паралельно, тому бітові операції займають лише один тактовий цикл. Однак додаток - це складна операція, яка складається щонайменше з однієї і, можливо, до десятка розрядних операцій, тому я, природно, думав, що це …

9
Які властивості мови програмування унеможливлюють компіляцію?
Питання: "Певні властивості мови програмування можуть зажадати, щоб єдиний спосіб отримати написаний на ньому код виконуватись шляхом інтерпретації. Іншими словами, компіляція до коду машинного типу традиційного процесора неможлива. Що це за властивості?" Укладачі: принципи та практика Параг Х. Дейва та Хіманшу Б. Дейва (2 травня 2012 р.) Книга не дає …

4
(Коли) є пошук хеш-таблиці O (1)?
Часто кажуть, що пошук хеш-таблиць працює в постійний час: ви обчислюєте значення хеша, яке дає вам індекс для пошуку масиву. І все ж це ігнорує зіткнення; в гіршому випадку кожен елемент висаджується в одне відро і час пошуку стає лінійним ( ).Θ(n)Θ(n)\Theta(n) Чи є умови в даних, які можуть зробити …

3
Як комп'ютери відстежують час?
Як комп’ютери здатні щоразу визначати правильний час та дату? Щоразу, коли я закриваю комп'ютер (вимикаю його), всі з'єднання та процеси всередині зупиняються. Як це відбувається, коли я знову відкриваю комп'ютер, він вказує точний правильний час? Чи комп'ютер не вимикається повністю, коли я його вимикаю? Чи все ще в ньому працюють …

4
Яка новинка у MapReduce?
Кілька років тому MapReduce був визнаний революцією розподіленого програмування. Також були критики, але, за великим рахунком, був захоплений галас. Це навіть запатентоване! [1] Назва нагадує mapі reduceфункціональне програмування, але коли я читаю (Вікіпедія) Крок карти: Головний вузол приймає вхід, ділить його на менші підпроблеми та розподіляє їх на робочі вузли. …

6
Чому машина Тьюрінга є популярною моделлю обчислення?
Я студент CS. Я розумію, як Тьюрінг придумав свою абстрактну машину (моделювання людини, що робить обчислення), але мені здається це незграбною, неелегантною абстракцією. Чому ми вважаємо "стрічку" і машинну головку, що пише символи, змінюючи стан, зміщуючи стрічку вперед і назад? Яке основне значення? DFA елегантний - він, здається, фіксує саме …

2
Що таке коіндукція?
Я чув про (структурну) індукцію. Це дозволяє будувати кінцеві структури з менших і дає доказові принципи для міркувань про такі структури. Ідея досить зрозуміла. А як щодо коіндукції? Як це працює? Як можна сказати щось безперечне про нескінченну структуру? Існує (принаймні) два кути, на які слід звернути увагу, а саме …

1
Мовне теоретичне порівняння граматики LL та LR
Люди часто кажуть, що LR (k) парсери є більш потужними, ніж LL (k) парсери. Ці твердження більшу частину часу є невиразними; зокрема, чи слід порівнювати класи для фіксованого або об'єднання по всіх ? То як справді ситуація? Зокрема, мене цікавить, як LL (*) вписується.kkkkkk Наскільки я знаю, відповідні набори граматики …

6
Офіційна перевірка програми на практиці
Як інженер програмного забезпечення, я пишу багато коду для промислової продукції. Відносно складні речі з класами, нитками, деякими зусиллями в галузі дизайну, а також деякими компромісами для продуктивності. Я дуже багато тестую, і мені набридло тестування, тому я зацікавився інструментами формального доказування, такими як Coq, Isabelle ... Чи можу я …

7
Чи є законодавством НП повним?
Мені хотілося б дізнатися, чи була якась робота, що стосується юридичного кодексу щодо складності. Зокрема, припустимо, що у нас є проблема рішення "Зважаючи на цю книгу законів та на цю конкретну сукупність обставин, чи підсудний винен?" До якого класу складності він належить? Є результати, які довели, що карткова гра Magic: …

14
Як я можу пояснити батькам, що я вивчаю мови програмування?
Зараз закінчую магістратуру з інформатики. Мене цікавлять мови програмування, особливо типові системи. Я зацікавився дослідженнями в цій галузі і наступного семестру я розпочну докторську ступінь на цю тему. Тепер ось справжнє питання: як я можу пояснити, що я (хочу) робити людям, які не мали попередніх знань ні в галузі інформатики, …

10
Чи може динамічна мова на зразок Ruby / Python досягати C / C ++ як продуктивність?
Цікаво, чи можна створити компілятори для динамічних мов, таких як Ruby, щоб мати схожу та порівнянну продуктивність з C / C ++? З того, що я розумію про компілятори, візьмемо, наприклад, Ruby, компіляція коду Ruby ніколи не може бути ефективною, оскільки спосіб обробки Ruby відображає такі функції, як автоматичне перетворення …

12
Чому компілятори автоматично не вставляють переговори?
На таких мовах, як C, програміст повинен вставляти дзвінки безкоштовно. Чому компілятор не робить цього автоматично? Люди роблять це за розумну кількість часу (ігноруючи помилок), тому це неможливо. EDIT: Для подальшого ознайомлення, ось ще одна дискусія, яка має цікавий приклад.

3
На місці алгоритм переплетення масиву
Вам надається масив з 2n2n2n елементів a1,a2,…,an,b1,b2,…bna1,a2,…,an,b1,b2,…bna_1, a_2, \dots, a_n, b_1, b_2, \dots b_n Завдання полягає в переплетенні масиву, використовуючи на місці алгоритм, такий, як виглядає отриманий масив b1,a1,b2,a2,…,bn,anb1,a1,b2,a2,…,bn,anb_1, a_1, b_2, a_2, \dots , b_n, a_n Якщо вимоги на місці не було, ми могли б легко створити новий масив та …

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