Я не знаю в какой раздел написать эту задачку, так как она вообще из раздела программирования

Программисты не догоняют тему, видимо привыкли только по клавишам щелкать

Ищу математическую формулу

Попробую обьяснить для чего это нужно

Если перебирать файлы на жестком диске - это занимает много времени

Если вычислять местоположения файла по моей структуре, то доступ будет мгновенным, жесткий диск не нужно будет крутить лишний раз

branches - число веток

max_file_count - максимальное количество файлов или папок в другой папке

при создании вот такого выражения

max_file_count=3

branches=2

получится вот такая структура

http://s4.uploads.ru/M3Eqk.png

веток можно делать неограниченное количество, структура будет такой же

как происходит подсчет каждого элемента ветки

Вначале я вычисляю максимальное число файлов которое уместится в этой структуре

Подсчитываю вот так

max_file_count в степени branches+1

т.е. в данном примере 3^2+1=27 $$3^3=27$$

теперь мне нужно вычислить в какой папке находится файл 3 и файл 15

Вычисляем папку 1 для файла 3

3 поделить на число ветвлений в степени количества веток (файл 3 поделить на branches+1 в степени branches) и округлить в большую сторону

3 поделить на 3 в степени 2 и округлить в большую сторону

$$3/3^2=3/9=0,3=1$$

Вычислили первую папку она будет 1

Вычисляем папку 2 для файла 3

3 поделить на число ветвлений в степени количества веток-1 (файл 3 поделить на branches+1 в степени branches-1) и округлить в большую сторону

3 поделить на 3 в степени 1 и округлить в большую сторону

$$3/3^1=3/3=1$$

Вычислили вторую папку она будет 1

Теперь мы знаем что файл 3 лежит по адресу 1/1/

Вычисляем папку 1 для файла 15

15 поделить на число ветвлений в степени количества веток (файл 15 поделить на branches+1 в степени branches) и округлить в большую сторону

15 поделить на 3 в степени 2 и округлить в большую сторону

$$15/3^2=15/9=1,6=2$$

Вычислили первую папку она будет 2

Вычисляем папку 2 для файла 15

15 поделить на число ветвлений в степени количества веток-1 (файл 15 поделить на branches+1 в степени branches-1) и округлить в большую сторону

15 поделить на 3 в степени 1 и округлить в большую сторону

$$15/3^1=15/3=5$$

Вычислили вторую папку она будет 5

Теперь мы знаем что файл 15 лежит по адресу 2/5/

Сравниваем полученные результаты с картинкой выше

Все бы хорошо, но у меня задумка была другой

Дерево должно иметь вот такой вид

http://s4.uploads.ru/GYndt.png

Что нужно поменять в формуле чтобы дерево вычислялось как на второй картинке?

В таком случае файл 3 должен лежать по адресу 1/1/

а файл 15 по адресу 2/2/

задан 21 Сен '13 23:34

изменен 21 Сен '13 23:42

10|600 символов нужно символов осталось
0

Если параметр max_file_count - максимальное количество файлов или папок в другой папке подразумевает оценку сверху... то есть некоторые файлы или папки по ссылке из вершины данного уровня могут быть пустыми (то есть указатель на них равен $%nil$%)... а параметр branches - число веток определён заранее... то вся нумерация файлов (в том числе пустых) имеет вид записи числа по основанию maxfilecount, в котором есть (branches+1)разрядов...

Например, на Вашей картинке переведите нумерацию файлов в троичную систему счисления...

ссылка

отвечен 22 Сен '13 1:37

изменен 22 Сен '13 1:41

10|600 символов нужно символов осталось
Ваш ответ

Если вы не нашли ответ, задайте вопрос.

Здравствуйте

Математика - это совместно редактируемый форум вопросов и ответов для начинающих и опытных математиков, с особенным акцентом на компьютерные науки.

Присоединяйтесь!

отмечен:

×2,621
×2,482
×75
×44
×25

задан
21 Сен '13 23:34

показан
882 раза

обновлен
22 Сен '13 1:41

Отслеживать вопрос

по почте:

Зарегистрировавшись, вы сможете подписаться на любые обновления

по RSS:

Ответы

Ответы и Комментарии

Дизайн сайта/логотип © «Сеть Знаний». Контент распространяется под лицензией cc by-sa 3.0 с обязательным указанием авторства.
Рейтинг@Mail.ru