Поиск:

Ответ в темуСоздание новой темы Создание опроса
> статистика в 128 бит, статистика в 128 бит 
:(
    Опции темы
reider
Дата 22.5.2014, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброго времени суток.
Столкнулся с проблемой и не могу придумать как решить, подскажите если есть мысли на данную тему, буду очень признателен.
Задача:
На входе имееться файл размером Size бит.По данному файлу необходимо навести статистику длинной N бит с шагом в n бит.
Т.е. полсчитывать какие есть в нём комбинации по N бит и сколько их.
Когда длина комбинации мала ( скажем 24 бита) , то проблем нет.
Я создаю массив:
INT32 *Mass = new INT32[pow(2,24)];
и когда к примеру я нахожу комбинацию к примеру "101000101010100011111010", то я привожу ее к значению в десятичной системе 10660090 и по этому адресу в массиве Mass пишу что нашёл ещё одну такую комбинацию Mass[10660090]++.
А как быть когда мне надо навести статистику в 128 бит?
Заранее благодарен.
PM MAIL   Вверх
Akina
Дата 22.5.2014, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(reider @  22.5.2014,  13:02 Найти цитируемый пост)
необходимо навести статистику длинной N бит с шагом в n бит.

1) Что такое в данном случае "статистика"?
2) Длиной в N бит - это строго N или не более чем N?
3) Что такое "шаг n" и к чему он прилеплен.
4) Что такое "сортировка подсчётом" - знаешь?


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

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


Новичок



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

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



1) Что такое в данном случае "статистика"?
-Статистика это список соответсвия вида комбинации и цифрового значения указывающего сколько раз это комбинация встречалась.
2) Длиной в N бит - это строго N или не более чем N?
-строго N
3) Что такое "шаг n" и к чему он прилеплен.
-шаг n это то с каим шагом относительно предыдущей позиции считывать следующую комбинацию в N бит
т.е. 
n =1;
N = 2;
Array =101110101001010100101010;
10
01
11
11
10
.......
n =2;
N = 2;
Array =101110101001010100101010;
10
11
10
10
10
01
.......
4) Что такое "сортировка подсчётом" - знаешь? 
-нет.
PM MAIL   Вверх
Akina
Дата 22.5.2014, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Теперь всё понятно. Следовательно
Цитата(reider @  22.5.2014,  14:17 Найти цитируемый пост)
4) Что такое "сортировка подсчётом" - знаешь? -нет. 

ищи и читай. Это то, что тебе нужно.


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

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


Новичок



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

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



Цитата

Сортировка подсчётом — алгоритм сортировки, в котором используется диапазон чисел сортируемого массива (списка) для подсчёта совпадающих элементов. Применение сортировки подсчётом целесообразно лишь тогда, когда сортируемые числа имеют (или их можно отобразить в) диапазон возможных значений, который достаточно мал по сравнению с сортируемым множеством

Не мой случай..

PM MAIL   Вверх
Akina
Дата 22.5.2014, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



reider, если ты будешь только читать, и не будешь при этом думать - хрен у тебя что получится.

Изволь посмотреть реализации метода. И убедись, что от твоего подхода, описанного выше, они отличаются одной лишь деталью - ты сразу резервировал массив (который к тому же был изрядно разреженным по окончании подсчёта), в то время как при сортировке обычно используется динамический массив (или коллекция) - на начальном этапе вообще без элементов, а по окончании содержащий только элементы, по индексу которых в наборе было хотя бы одно такое значение.


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

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


Новичок



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

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



Круто. А как же мне при наведении статистики узнать был ли такой эелемент ранее?
Идти по списку???
Данный метод не подразумевает кодирование значения выборки до меньшего размера.

PM MAIL   Вверх
Akina
Дата 22.5.2014, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Что такое коллекция - знаете? Если значение элемента - ключ коллекции, то при попытке прибавить единичку к несуществующему элементу возникнет ошибка, что элементарно ловится, после чего выполняется добавление к коллекции нового элемента со значением 1.


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

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


Новичок



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

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



Знаю. 
А из-за чего возникает эта ошибка при обращение к несуществующему элементу? 
А точнее от куда становиться известно что он не существует?
PM MAIL   Вверх
Akina
Дата 23.5.2014, 08:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Ууу... не, читать лекции по основам - это пусть кто другой...


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

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


Новичок



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

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



невозможно осуществить адресацию множества всех вариантов N битного значения в множестве с адресацией из меньшего числа разрядов.
То о чём вы говорите, это не ошибка обращения к памяти, т.к. для того чтобы считать что ключь ошибочный надо осуществить поиск данного ключа во всём множестве, и не важно на сколько он быстр , т.к. это в десятки раз мендленней прямой адресации.
Возможно вы слишком высокомерно подошли к теме , и даже не стали в неё вникать.
Подняв труды по ТВ стало ясно что данная задача не решаема без явного или не явного перебора.
Если вы уж изволили отвечать то не надо заниматься подколами и ставить себя выше всего при этом даже не давая ясных ответов.


Это сообщение отредактировал(а) reider - 23.5.2014, 09:21
PM MAIL   Вверх
Mirkes
Дата 23.5.2014, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 4
Всего: 17



Вообще то это не подколка. Вы не уточнили язык реализации. Например, если вы используете java, то следует применить HashMap<String,Integer>. Тогда, фрагмент заносящий очередной битовый фрагмент в коллекцию будет выглядеть так:

Код

     public void addFragment(HashMap dictionary, String key){
          Integer count = dictionary.get(key);
          if (count == null) // метод get возвращает значение null если такого фрагмента еще не было.
                dictionary.put(key,1);
          else
                dictionary.put(key,count + 1);
     }

Строка key содержит битовое представление текущего фрагмента, например "1000011001".

Однако, если вы используете другой язык, то и процедура будет другой. Однако, поиск соответствующего фрагмента уже не ваше дело - java проводит его самостоятельно и очень эффективно!


--------------------
Mirkes
PM MAIL   Вверх
Akina
Дата 23.5.2014, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Mirkes @  23.5.2014,  12:23 Найти цитируемый пост)
если вы используете другой язык, то и процедура будет другой

В основном - только если есть желание использовать специфичные для языка более эффективные конструкции. А при использовании системных (скажем, Scripting.Dictionary) разница будет только в языко-специфичном синтаксисе.

Добавлено через 1 минуту и 51 секунду
Цитата(reider @  23.5.2014,  10:20 Найти цитируемый пост)
для того чтобы считать что ключь ошибочный надо осуществить поиск данного ключа во всём множестве

Если прёт это делать вручную - флаг в руки. Впрочем, если при этом хранить текущий массив данных в сортированном состоянии, то бинарный поиск выполнит требуемое достаточно эффективно... но зачем? ведь "всё украдено ещё до вас...".


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

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


Опытный
**


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

Репутация: 4
Всего: 17



Цитата(Akina @ 23.5.2014,  11:30)
Цитата(Mirkes @  23.5.2014,  12:23 Найти цитируемый пост)
если вы используете другой язык, то и процедура будет другой

В основном - только если есть желание использовать специфичные для языка более эффективные конструкции. А при использовании системных (скажем, Scripting.Dictionary) разница будет только в языко-специфичном синтаксисе.

Именно это я и имел в виду smile


--------------------
Mirkes
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

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


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

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


 




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


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

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