Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Алгоритмы
|
|||
|---|---|---|---|
|
#18+
РЕСДЭновцы тоже не решили . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2016, 11:22 |
|
||
|
Алгоритмы
|
|||
|---|---|---|---|
|
#18+
mayton, а, понял о чем ты. Здесь ситуация другая. Если грубо, у него ошибка, которая слабо влияет на результат. Он логарифмирует только одну сторону сравнения. Надо логарифмировать по основанию, которое возводилось в степень с другой стороны ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2016, 11:22 |
|
||
|
Алгоритмы
|
|||
|---|---|---|---|
|
#18+
Бррр. Не понял. С одной стороны... с другой. А можно формулой как-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2016, 11:26 |
|
||
|
Алгоритмы
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВРЕСДЭновцы тоже не решили . Почему тоже? У нас уже есть почти решение (сравнение). Но его можно еще улучшить, с учетом последних данных ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2016, 11:26 |
|
||
|
Алгоритмы
|
|||
|---|---|---|---|
|
#18+
maytonБррр. Не понял. С одной стороны... с другой. А можно формулой как-то? Ну вот у него есть башни (Count1, Head1) и (Count2, Head2). Пусть, для определенности Count2=Count1+1. Он сравнивает башни как Ln(Head1) и Head2, потому что он не хранит информацию о предыдущих уровнях башен. Правильно было бы использовать логарифм по основанию, равному уровню перед шапкой в башне 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2016, 11:36 |
|
||
|
Алгоритмы
|
|||
|---|---|---|---|
|
#18+
Aleksandr SharahovmaytonБррр. Не понял. С одной стороны... с другой. А можно формулой как-то? Ну вот у него есть башни (Count1, Head1) и (Count2, Head2). Пусть, для определенности Count2=Count1+1. Он сравнивает башни как Ln(Head1) и Head2, потому что он не хранит информацию о предыдущих уровнях башен. Правильно было бы использовать логарифм по основанию, равному уровню перед шапкой в башне 2. На самом деле не совсем так. В качестве шапки у него уже хранится логарифм верхней башенки: Head1=Ln(Top1). И, значит, верхняя башенка равна Top1=Exp(Head1). После приведения башен к равной высоте получим новый Top1'=Log(a,Top1)=Log(a,Exp(Head1)). Для сравнения нужен новый Head1'=Ln(Top1')=Ln(Log(a,Exp(Head1)))=Ln(Head1/Ln(a)). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2016, 14:09 |
|
||
|
Алгоритмы
|
|||
|---|---|---|---|
|
#18+
А разве можно вычислить например ln(ln(ln(ln(99)))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2016, 14:35 |
|
||
|
Алгоритмы
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВА разве можно вычислить например ln(ln(ln(ln(99)))) Вычисления логарифма нужны не сами по себе, а для сравнения башен. Когда башни маленькие, сравниваем их непосредственно. Когда башни большие, сравниваем их логарифмы. Если при этом окажется, что у одной из них логарифм не существует, то она меньше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2016, 14:43 |
|
||
|
Алгоритмы
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВА разве можно вычислить например ln(ln(ln(ln(99)))) А где у нас была такая формула? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2016, 14:45 |
|
||
|
Алгоритмы
|
|||
|---|---|---|---|
|
#18+
maytonЕвгенийВА разве можно вычислить например ln(ln(ln(ln(99)))) А где у нас была такая формула? 18777841 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2016, 15:04 |
|
||
|
Алгоритмы
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВmaytonпропущено... А где у нас была такая формула? 18777841 Ну нет там такого. Смотри внимательнее. Под логарифмом - сумма. В последнем преобразовании. Дальше просто не было преобразований. Будь осторожнее с такими аналогиями. Конешно область определения уходит в минус. Но твоя формула не равна моей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2016, 15:06 |
|
||
|
Алгоритмы
|
|||
|---|---|---|---|
|
#18+
Есть идея. Результат можно рассмотреть как Код: sql 1. Для расчета конкретного значения f() это pow(), но для сравнения можно поискать функцию с такими же характеристиками, т.е. чтобы при Код: sql 1. всегда выполнялось Код: sql 1. Дополнительно можно ограничить что основание (а и с) всегда в диапазоне 2...99 Правда тут проблема что из-за вложенности погрешность большая может накопиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2016, 17:31 |
|
||
|
Алгоритмы
|
|||
|---|---|---|---|
|
#18+
Станислав С...кийА если отчет за месяц будет строиться за 20 секунд вместо 20 минут? А? Зато тот, что за 20 минут - правильный :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2016, 17:41 |
|
||
|
Алгоритмы
|
|||
|---|---|---|---|
|
#18+
Aleksandr Sharahovдумаю, стоит попробовать приводить к виду e^e^e^e^e^e^e^e^e^xдумаю, очень хорошая идея. сравнение чисел можно производить по количеству "e", если оно разное, и по "x", если количесто одинаковое. Aleksandr Sharahovсправа налево, каждый раз переходя к новому основанию e. а почему не напрямую? можно расписать это step-by-step. введем обозначение: пусть A 1.k = a 1 ^a 2 ^a 3 ...a k , A 2.k = a 2 ^a 3 ...a k , A k.k = a k . согласно A = e ln(A) , получается, что многократно логарифмуя, на каждом шагу получаем .. распишем пошагово: первый шаг: ln( A 1.k ) = A 2.k * ln( a 1 ) второй шаг: ln(ln( A 1.k )) = ln(A 2.k * ln( a 1 )) = ln(A 2.k ) + ln(ln( a 1 )) = A 3.k * ln( a 2 ) + ln(ln( a 1 )) Так, здесь у нас появляется сумма, и уже нельзя так удобно логарифмовать с переносом остатка башни вниз в виде множителя. Однако, если мы перепишем верхнее выражение как A 3.k * [ ln( a 2 ) + ln(ln( a 1 )) / A 3.k ] то есть вынесем за скобки башню (3.к), то вроде бы видно что членом с a 1 можно пренебречь, он будет практически нулем. и тогда третий шаг: ln(ln(ln( A 1.k ))) = A 4.k * ln( a 3 ) + ln(ln( a 2 )) и аналогично четвертый шаг ln(ln(ln(ln( A 1.k )))) = A 5.k * ln( a 4 ) + ln(ln( a 3 )) ну и вроде появляется алгоритм "факторизации" башни, то есть приведения ее в вид e^e^e^e^e^e^e^e^e^x то есть что-то такое: 1. Просматриваем башню, и если где-то какой-то a i = 1, отбрасываем его и всю часть правее. 2. Делаем 'к' шагов (столько, сколько членов башни задано с учетом п.1) 3. Вычисляем x на последнем шагу. 4. Если оно большое (x>e), логарифмируем, столько раз, сколько надо, чтобы получилось 0 < x < e, при этом добавляя к нашему 'k' дополнительные шаги. 5. Теперь у нас есть оценка величины башни - это два числа - количество шагов и x. ну пусть кто-нибудь проверит, не ошибся ли я:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2016, 17:52 |
|
||
|
Алгоритмы
|
|||
|---|---|---|---|
|
#18+
S.G.A 3.k * [ ln( a 2 ) + ln(ln( a 1 )) / A 3.k ] то есть вынесем за скобки башню (3.к), то вроде бы видно что членом с a 1 можно пренебречь Нельзя им пренебречь. В этом и засада. Заходили немного с другой стороны 18782181 (не сработало), и также споткнулись на "вроде можно пренебречь". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2016, 18:28 |
|
||
|
Алгоритмы
|
|||
|---|---|---|---|
|
#18+
В продолжение 18789098 если взять Код: sql 1. тогда все отлично работает на башнях одинаковой высоты. Тестю в экселе. Но на разных не работает, т.к. Log2(1^1) = 0. Логарифм по основанию 2 (минимально возможное) именно потому чтобы всегда было в результате >=1. В общем мне эта идея кажется заманчивой, но надо ее допилить для сравнения башен разной высоты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2016, 18:48 |
|
||
|
Алгоритмы
|
|||
|---|---|---|---|
|
#18+
S.G., я имел в виду следующее: Любая башня однозначно представима в виде: e^e^...n раз...e^x, где 0<=x<1 Поэтому достаточно хранить и сравнивать только эти два числа. Проблема в том, чтобы организовать циклический пересчет этих чисел сверху вниз. Возможно, удобнее будет использовать основание 2 вместо e. Я эту идею пока не бросаю, оставил на подумать при наличии времени. Есть мысль, как ее развить, но пока занят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2016, 20:26 |
|
||
|
Алгоритмы
|
|||
|---|---|---|---|
|
#18+
Aleksandr SharahovS.G., я имел в виду следующее: Любая башня однозначно представима в виде: e^e^...n раз...e^x, где 0<=x<1 Поэтому достаточно хранить и сравнивать только эти два числа. Проблема в том, чтобы организовать циклический пересчет этих чисел сверху вниз. да, я понял. (только условие для x должно быть 0 < x < e , как мне кажется) просто попытался сделать это снизу вверх. (или слева направо). На одном из шагов есть отбрасывание (как мне кажется незначительного) члена, но Dima T утверждает что его нельзя отбросить. Мне сейчас немного сложновато сделать рабочий код для проверки (увы, основная работа мешает :) ) но через несколько дней я попробую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2016, 20:58 |
|
||
|
Алгоритмы
|
|||
|---|---|---|---|
|
#18+
Я не помню рассматривали такой подход или нет. Можно попробовать брать частное двух башен и строить компаратор на основании этого свойства. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2016, 10:29 |
|
||
|
Алгоритмы
|
|||
|---|---|---|---|
|
#18+
mayton, все тоже самое в итоге получается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2016, 13:24 |
|
||
|
Алгоритмы
|
|||
|---|---|---|---|
|
#18+
Еще одна мысль появилась про "отбросить незначительное", т.е. тут выкинуть ln(ln(a 1 )) ln(ln(b 1 )) и получить т.е. обсчитать только верх башни. Наигравшись в экселе с 4-5 этажными башнями из малых чисел вроде как вижу что должно работать, но надо то что выкинули все равно учесть, т.к. {99,99,3,4,5} > {99,98,3,4,5} а формула это игнорирует. Поэтому сделал просто: при совпадении шапок опускаюсь ниже и сравниваю значения одного уровня, если не совпали, то больше там где значение больше, т.е. в данном примере 99 > 98 поэтому считаю что башня больше. Но похоже неправильное сравнение. Заслал на тест, останавливается на 5-й проверке. Дополнительно нормализовал башни. Сделал тип double и понижаю верхушку пока результат возведения в степень <10 50 Надо либо проверку нижних усовершенствовать при совпадении верхов, либо идея "отбросить незначительное" не подходит, т.е. отбрасывается что-то значительное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2016, 18:16 |
|
||
|
Алгоритмы
|
|||
|---|---|---|---|
|
#18+
Есть сомнения что при любых A, B, C всегда выполняется условие {2, 2, 2, 2, 2, 2, 99, A, B, C} > {99, 99, 99, 99, 99, 99, 98, A, B, C} как проверить - не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2016, 19:26 |
|
||
|
Алгоритмы
|
|||
|---|---|---|---|
|
#18+
Dima TЕсть сомнения что при любых A, B, C всегда выполняется условие {2, 2, 2, 2, 2, 2, 99, A, B, C} > {99, 99, 99, 99, 99, 99, 98, A, B, C} как проверить - не знаю. проверить, что в самом тяжелом случае (A=B=C=2) 99^A^B^C / 98^A^B^C > 7 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2016, 20:19 |
|
||
|
Алгоритмы
|
|||
|---|---|---|---|
|
#18+
Aleksandr SharahovDima TЕсть сомнения что при любых A, B, C всегда выполняется условие {2, 2, 2, 2, 2, 2, 99, A, B, C} > {99, 99, 99, 99, 99, 99, 98, A, B, C} как проверить - не знаю. проверить, что в самом тяжелом случае (A=B=C=2) 99^A^B^C / 98^A^B^C > 7 Тут калькулятора достаточно: 99^16 / 98^16 = 8.514577711e31 / 7.237977206e31 = 1.176375314 Откуда магическое число 7? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2016, 20:29 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39165351&tid=1340102]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
163ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 282ms |
| total: | 536ms |

| 0 / 0 |
