Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сравнение двух файлов 
:(
    Опции темы
mmvds
Дата 27.2.2008, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 22.12.2007

Репутация: 1
Всего: 6



Дома была генеральная уборка, наткнулся на задания универской олимпиады (ННГУ за 8 апреля 2006 года)

Задача следующая: (дознаватель)
Дознавателю предоставили на изыскание идентичности два файла неизвестного содержания, объемом до одного гигабайта. 
Дознаватель должен обнаружить (с точностью до одного байта) общую часть максимального размера и сообщить ее местоположение в каждом файле.
В случае существования двух и более ответов выдать любой из них.

Запуск программы дознавания осуществляется посредством командной строки, в которой указываются имена двух исходных файлов.

Результат: вывод общей части в байтах (или сообщение об ее отсутствии), вывод смещения к общей части в первом и втором файле.

Задачу эту тогда и не решил, также не решил ее никто с нашего факультета, по прошествии года с лишним до сих пор не знаю даже с какой стороны к ней подступиться.

Перебор явно не прокатит, т.к. файлы до 1 Гб, была идея использовать хэши, но не понятно как хэшировать, если содержимое файла не известно, может это вообще бинарные файлы, какого размера блоки для хэша выбирать...
PM MAIL ICQ   Вверх
mmvds
Дата 28.2.2008, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 22.12.2007

Репутация: 1
Всего: 6



Нашел для текстовых файлов интересную статью решение аналогичной задачи через хэширование строк. 
Но опять же это для текстовых файлов, для бинарных файлов пришла в голову аналогичная идея - найти самый часто встречающийся ASCII символ и считать его разделителем, хэши брать соответственно также для символов между разделителями.
PM MAIL ICQ   Вверх
maxdiver
Дата 3.3.2008, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 29.1.2008
Где: Саратов

Репутация: 16
Всего: 18



А в чём разница между "текстовым" и "бинарным" файлами? В первом случае алфавит состоит из 52 символов, во втором - из 256. Хэши как работали, так и будут работать.
PM MAIL WWW ICQ   Вверх
Akina
Дата 3.3.2008, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(mmvds @  28.2.2008,  19:17 Найти цитируемый пост)
найти самый часто встречающийся ASCII символ и считать его разделителем, хэши брать соответственно также для символов между разделителями. 

Включая разделители, между прочим.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
mmvds
Дата 3.3.2008, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 22.12.2007

Репутация: 1
Всего: 6



Цитата(maxdiver @  3.3.2008,  10:27 Найти цитируемый пост)
А в чём разница между "текстовым" и "бинарным" файлами? В первом случае алфавит состоит из 52 символов, во втором - из 256. Хэши как работали, так и будут работать. 

Разница в том, что в бинарном файле само понятие "строки" отсутствует и методы, работающие с текстовыми файлами с бинарными уже не прокатывает. Например, вместо построчного считывания прейдется мудрить с блочным, т.к. в данной задаче размер блока не фиксирован и заранее не известен, а побайтное считывание будет занимать много времени.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0435 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.