|
|
|
SSS. Некоторые задачи
|
|||
|---|---|---|---|
|
#18+
Dima TWhite Owlпропущено... А ну да. Самый простой. Однако не самый эффективный :) Все-таки O(n) против O(n^2) с чего вдруг O(n^2)? Два прохода: первый перемножить, второй получить результат. Два цикла против трех и никакого лишнего расхода памяти.О! Да, ты прав. Действительно Код: vbnet 1. 2. 3. 4. 5. 6. 7. Тогда будет \Theta(2n) против \Theta(3n) для варианта без деления. Dima TWhite OwlЧего это вдруг неверный? "40% of whom known as good customers and who together account for 60% access to the database". Откуда ты взял вариативность? Не буду спорить, оригинал не понимаю. Не силен в английском. Пользовался Сашиним переводом: SashaMercuryБД содержит 10^4 записей в отсортированном порядке. 60% записей используются часто, остальные 40% редко.Ну как же вы так? Ай-ай-ай! В нашей профессии английский надо знать как родной. "10К имен, из которых 40% известны как "хорошие клиенты" и кто совместно генерирует 60% запросов к базе" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2015, 20:52 |
|
||
|
SSS. Некоторые задачи
|
|||
|---|---|---|---|
|
#18+
White Owl SSБД содержит 10^4 записей в отсортированном порядке. 60% записей используются часто, остальные 40% редко. Ну как же вы так? Ай-ай-ай! В нашей профессии английский надо знать как родной. "10К имен, из которых 40% известны как "хорошие клиенты" и кто совместно генерирует 60% запросов к базе" Моё перевод упрощён, но корректен. Дословный перевод будет такой: База данных содержит 10^4 отсортированных имён. (Далее идём of whom, значит 'которых') 40% известны как хорошие клиенты(имена и клиенты в данном случае синонимы) и на них совместно приходится 60% запросов к базе данных. И т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2015, 02:03 |
|
||
|
SSS. Некоторые задачи
|
|||
|---|---|---|---|
|
#18+
White OwlSashaMercury 4 -30 БД содержит 10^4 записей в отсортированном порядке. 60% записей используются часто, остальные 40% редко.Не совсем. Там имеется 40% людей которые делают 60% запросов. Это значит что результат поиска "своей" записи надо умножить на частоту обращений. SashaMercuryQ3) Решение третьей задачи кажется совсем простым. В первом случае нужно задать такой вопрос, что лучше, log(n) или 2log(n) ? Конечно лучше хранить всё в одномерном упорядоченном массиве и использовать двоичный поиск. Не совсем... К тому же у нас заранее известен n. В случае одного общего массива мы имеем: 10000*log(10000)=132877.1238. А в случае двух массивов мы имеем: 6000*log(4000) + 4000*log(6000)=71794.7057 + 50202.9871 = 121997.6928 Итого, два массива при бинарном поиске получаются чуть-чуть получше, примерно на 8%. Аналогично для линейного: Общий массив: 10К * 10К = 100М Два массива: 6К*4К+4К*6К= 24К+24К = 48К Выигрыш получается еще больше. Я выделил красным то место где вы опечатались(или ошиблись, но это повлияло на результат). 1. 1 Пусть у нас один упорядоченный массив из 10000, бинарный поиск даст нам высоту 14. Пусть мы имеем к запросов, итого 14k затрат. 1. 2. Пусть у нас два упорядоченных массива. Первый 4000 элементов, высота поиска 12, второй 6000 элементов, высота 13. Пусть у нас 0,6k запросов на первый массив, 0,4k запросов проходят через первый массив и переходят на второй. Имеем k*(0,6*12+0,4*(12+13))=17,2k затрат. Вывод: в данном конкретном случае, с точки зрения поиска, нет смысла разделять два упорядоченных массива. Но данный анализ неполный, ибо не учтены остальные аспекты, и я не знаю как правильно это сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2015, 02:38 |
|
||
|
SSS. Некоторые задачи
|
|||
|---|---|---|---|
|
#18+
SashaMercury1. 2. Пусть у нас два упорядоченных массива. Первый 4000 элементов, высота поиска 12, второй 6000 элементов, высота 13. Пусть у нас 0,6k запросов на первый массив, 0,4k запросов проходят через первый массив и переходят на второй. Имеем k*(0,6*12+0,4*(12+13))=17,2k затрат.Да, так будет правильнее... SashaMercuryНо данный анализ неполный, ибо не учтены остальные аспекты, и я не знаю как правильно это сделать.Да нет. Этот анализ настолько полон насколько у нас есть иноформации о задаче. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2015, 06:13 |
|
||
|
SSS. Некоторые задачи
|
|||
|---|---|---|---|
|
#18+
White OwlSashaMercuryQ2) Со второй задачей сложнее. Очевидным был бы следующий ответ: Так как Extract Maximum выполняется за O(1) то в таком случае сортировка возможна за O(n). Но 1. Зачем остальные части условия ? 2. Разве существует доказательство того что сортировка не может быть реализована за O(n) ? Следовательно рассуждаю я скорее всего неверно(при решении данной задачи). Есть ли у вас какие-то идеи ?Тоже не понял, к чему там подсказка. Я рассуждаю так: а) Если в структуре данных хранится несколько элементов, то эта структура может рассматриваться как массив. В дальнейшем буду использовать это слово и сопутствующую терминологию. б) Чтобы операция Maximum выполнялась за O(1), надо чтобы в данном массиве данных максимальный элемент был всегда четко указан. Это можно сделать двумя способами, либо хранить дополнительно индекс максимального элемента, либо держать в массив в сортированном состоянии. в) Если массив изначально не сортирован, но мы имеем индекс на его максимальный элемент то чтобы выполнялась операция ExtractMaximum выполнялась за O(1) надо чтобы мы могли за O(1) найти новый максимальный элемент после экстракта предыдущего максимума. Значит нам нужно где-то хранить индекс предыдущего во величине элемента. Это проще всего сделать если хранить индекс предыдущего элемента вместе с самим элементами... Вывод - в случае хранения данных не в сортированном виде мы должны хранить его в связном списке. г) Но в случае связанного списка для вставки элемента в правильное место (что бы сохранить сортированность списка), нам понадобится это место найти, а это уже обязательно O(n). д) Если данные хранятся в виде сортированного индексированного массива, то для нахождения максимума достаточно взять его последний элемент, а для нахождения предыдущего максимально - предпоследний. Все просто и легко, Maximum и ExtractMaximum выполняются за O(1). е) А если у нас сортированный индексированный массив, то операция вставки потребует найти те два элемента между которыми надо вставлять новый, а это как минимум O(log n). А потом еще двигать хвост массива чтобы освободить место под новый элемент, а это еще O(n). Таким образом у нас и получается что структура данных у которой все три завяленные операции выполняются за O(1) не получается... Теперь я понял при чём тут вставка. Всё что вы рассказали выглядит логично. Однако это не доказывает того, что такое в принципе не возможно. И вообще, я не уверен в том, что существует полное и объективное доказательство такого факта. Вероятно автор имел ввиду рассуждение в вашем ключе. Спасибо :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2015, 08:30 |
|
||
|
SSS. Некоторые задачи
|
|||
|---|---|---|---|
|
#18+
Dima TWhite Owlпропущено... Не совсем. Там имеется 40% людей которые делают 60% запросов. Неверный вывод. Сказано "часто", без конкретики, я так понимаю это точно не 60:40, может 100:1 или 1000:1 Дмитрий, тут я виноват, не до конца перевёл. Но связано это с тем, что частота запросов на мой взгляд не должна сильно влиять на базу данных. Если критерием сравнения будет вставка, то только при отношении около 17:3 преимущество будет у второго способа(2 бинарных поиска) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2015, 08:39 |
|
||
|
SSS. Некоторые задачи
|
|||
|---|---|---|---|
|
#18+
на сфере (Web Mercator) длину градуса метрах получить легко Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2016, 14:14 |
|
||
|
SSS. Некоторые задачи
|
|||
|---|---|---|---|
|
#18+
tchingiz, в формуле для сферы попробуйте заменить большую полуось а, на сумму большой a и малой b полуосей эллипсоида делённых на два. a -> (a+b)/2. Вообще для таких вещей используют интегральное исчисление. Не знаю насколько вам это подходит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2016, 02:56 |
|
||
|
SSS. Некоторые задачи
|
|||
|---|---|---|---|
|
#18+
Нет, приближенная формула другая. У вас , далее посмотрите приближенные формулы для полупериметра. Либо, периметр можно найти как длину кривой, в вашем случае так: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2016, 04:29 |
|
||
|
SSS. Некоторые задачи
|
|||
|---|---|---|---|
|
#18+
та, не интеграл там не очень нужен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2016, 10:50 |
|
||
|
SSS. Некоторые задачи
|
|||
|---|---|---|---|
|
#18+
через день я уже нашел. Серапинас Математическая картография. - это оно, но без картинки, лично мне, не понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2016, 10:53 |
|
||
|
SSS. Некоторые задачи
|
|||
|---|---|---|---|
|
#18+
Что значит радиус линии, подразумевается радиус кривой ? Вы использовали эту формулу, она вам подходит ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2016, 06:39 |
|
||
|
SSS. Некоторые задачи
|
|||
|---|---|---|---|
|
#18+
SashaMercuryЧто значит радиус линии, подразумевается радиус кривой ? ну, да. Любая линия на поверхности эллипсоида будет кривой в очевидном смысле. //Прямая, кстати (в неочевидном смысле), тоже кривая с бесконечным радиусом кривизны. SashaMercury Вы использовали эту формулу, она вам подходит ? да, вот тут а шо делать? Есть альтернатива? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2016, 00:44 |
|
||
|
SSS. Некоторые задачи
|
|||
|---|---|---|---|
|
#18+
как то первая задача решена не полностью. итак есть массив из 12 элементов... надо собрать подмножество из 10 элементов (k=10, n=12) шаг 1: выберем первых 10 элементов с вероятностью 1 шаг 2: генерим число от 1 до 11. вероятность замены каждого из 10 элементов 1/11. вероятность каждого элемента остаться 1-1/11=10/11. вероятность попадания 11-ого элемента в выборку 10/11. шаг 3: генерим число от 1 до 12. вероятность замены каждого элемента 1/12. Вероятность каждого из первых 11 элементов остаться в выборке = 10/11-1/12 = (120-11)/132 = 109/132 . Это не равно 10/12 - вероятность попадания в выборку 12-ого элемента представим что у нас n = не 12, а 13... тогда: шаг 4: генерим от 1 до 13. вероятность замены уже выбранного элемента 1/13. Вероятность каждого из первых 11 остаться в выборке 109/132-1/13 = (1417 - 132) / 1716 = 1285 / 1716. Вероятность 12-ого остаться 10/12-1/13=(130-12)/156 = 118/156 = 59/78. Вероятность 13-ого попасть в выборку 10/13 имеем уже 3 разные вероятности : 1285/1716, 59/78 и 10/13 1285/1716 = 0.7488 59/78 = 0.7564 10/13 = 0.7692 итак, всего на 4 шагах получили ошибку в 2% (это не мало :)) ). будет больше шагов, разница в вероятностях будет ещё больше. Если не прав - поправьте. Если нет, стоит искать другое решение, где вероятность выбора каждого элемента будет выражаться через k и n, но ни в коем случае не через i. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2016, 02:13 |
|
||
|
SSS. Некоторые задачи
|
|||
|---|---|---|---|
|
#18+
Програмёр, Проблема с шагом 3. Вероятность попадания нового элемента 10/12, остаться старому 10/11 * 11/12 = 10/12 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2016, 07:25 |
|
||
|
SSS. Некоторые задачи
|
|||
|---|---|---|---|
|
#18+
tchingiz, предлагал использовать интеграл, но это видимо не очень удобно. А зачем в вашем случае альтернатива, если вы уже всё сделали ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2016, 07:28 |
|
||
|
SSS. Некоторые задачи
|
|||
|---|---|---|---|
|
#18+
SashaMercuryПрограмёр, Проблема с шагом 3. Вероятность попадания нового элемента 10/12, остаться старому 10/11 * 11/12 = 10/12 Ну да. Я ступил похоже )) чё меня минусовать дёрнуло... Поздно было )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2016, 08:59 |
|
||
|
|

start [/forum/topic.php?fid=16&gotonew=1&tid=1340824]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
134ms |
get topic data: |
6ms |
get first new msg: |
4ms |
get forum data: |
1ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 407ms |

| 0 / 0 |
