![]() |
|
|
![]()
|
|
| mmvds |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 22.12.2007 Репутация: 1 Всего: 6 |
Дома была генеральная уборка, наткнулся на задания универской олимпиады (ННГУ за 8 апреля 2006 года)
Задача следующая: (дознаватель) Дознавателю предоставили на изыскание идентичности два файла неизвестного содержания, объемом до одного гигабайта. Дознаватель должен обнаружить (с точностью до одного байта) общую часть максимального размера и сообщить ее местоположение в каждом файле. В случае существования двух и более ответов выдать любой из них. Запуск программы дознавания осуществляется посредством командной строки, в которой указываются имена двух исходных файлов. Результат: вывод общей части в байтах (или сообщение об ее отсутствии), вывод смещения к общей части в первом и втором файле. Задачу эту тогда и не решил, также не решил ее никто с нашего факультета, по прошествии года с лишним до сих пор не знаю даже с какой стороны к ней подступиться. Перебор явно не прокатит, т.к. файлы до 1 Гб, была идея использовать хэши, но не понятно как хэшировать, если содержимое файла не известно, может это вообще бинарные файлы, какого размера блоки для хэша выбирать... |
|||
|
||||
| mmvds |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 22.12.2007 Репутация: 1 Всего: 6 |
Нашел для текстовых файлов интересную статью решение аналогичной задачи через хэширование строк.
Но опять же это для текстовых файлов, для бинарных файлов пришла в голову аналогичная идея - найти самый часто встречающийся ASCII символ и считать его разделителем, хэши брать соответственно также для символов между разделителями. |
|||
|
||||
| maxdiver |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 29.1.2008 Где: Саратов Репутация: 16 Всего: 18 |
А в чём разница между "текстовым" и "бинарным" файлами? В первом случае алфавит состоит из 52 символов, во втором - из 256. Хэши как работали, так и будут работать.
|
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
Включая разделители, между прочим. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| mmvds |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 22.12.2007 Репутация: 1 Всего: 6 |
Разница в том, что в бинарном файле само понятие "строки" отсутствует и методы, работающие с текстовыми файлами с бинарными уже не прокатывает. Например, вместо построчного считывания прейдется мудрить с блочным, т.к. в данной задаче размер блока не фиксирован и заранее не известен, а побайтное считывание будет занимать много времени. |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |