Алго подскажите - Форум успешных вебмастеров - GoFuckBiz.com - Страница 2
 
 
Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB88.4375
BTC/USD67606.5683
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 27.08.2010, 22:36
Start Post: Алго подскажите 
  #11
TerVer
Senior Member
 
Аватар для TerVer
 
Регистрация: 14.09.2007
Сообщений: 740
Бабло: $73721
По умолчанию

Хай!
Чет за три дня не могу придумать.
Имеется к примеру 2000 страниц и определенное кол-во ссылок (от 5 до 5000).
Так же для каждой ссылки есть статистика, которая выражается числом от 10 до 20000. (ну типа $link[$url]=$numder)
В каждую страничку хочу вставить до 5 ссылок.
Как бы ссылки распределить по сраничкам в соответствии со статистикой покрасивее?!
TerVer вне форума  
Старый 28.08.2010, 18:15   #12
TerVer
Senior Member
 
Аватар для TerVer
 
Регистрация: 14.09.2007
Сообщений: 740
Бабло: $73721
ТС -->
автор темы ТС По умолчанию

да - равномерно расставить ссылки, согласно весам (статой).
Приведеные решения были бы хороши, если линков было бы штук 10-20 и веса их не сильно разнились бы. А так например линков может быть 500 а веса от 10 до 20000. На 2000 страницах рандом - ну ошеньма некрасиво сработает.

ЗЫ: alexpotemkin, вы изобретали велосипед! В универе на ОС помню разжевывали распеределение ресурсов по задачам. Рассматривали всякие способы, этот был самый понятный сцука без всяких хэшов, кэшов ...
TerVer вне форума  
Старый 28.08.2010, 18:30   #13
alexpotemkin
Senior Member
 
Регистрация: 27.10.2007
Сообщений: 134
Бабло: $37333
По умолчанию

Ну без своих велосипедов тяжело иногда, да и вообще иногда просто хочется их сделать, но в принципе ты прав задача из стандартных.
В универе там много чего было , все классические алгоритмы.
В чем тогда проблема замутить решение ?

Последний раз редактировалось alexpotemkin; 28.08.2010 в 18:35.
alexpotemkin вне форума  
Старый 28.08.2010, 18:40   #14
seeker
Ебланнед
 
Регистрация: 07.04.2010
Сообщений: 1,575
Бабло: $0
По умолчанию

Цитата:
Сообщение от TerVer Посмотреть сообщение
да - равномерно расставить ссылки, согласно весам (статой).
Приведеные решения были бы хороши, если линков было бы штук 10-20 и веса их не сильно разнились бы. А так например линков может быть 500 а веса от 10 до 20000. На 2000 страницах рандом - ну ошеньма некрасиво сработает.
разбей свои линки по массивам/файлам
в каждом по 10 штук
и бери оттуда иногда

а вообще такие хитровыебанные задачи представляются так:
есть такие-то линки: линк1 линк2 линк3 и есть такие-то паги: пага1 пага2 пага3
хочу получить: пага1 линк1 -> пага2; пага2 линк3 -> пага4
и т.д.
т.е., что было и что надо, а то тут элементы телепатии мешают сосредоточиться
__________________
НЕАДЕКВАТ
seeker вне форума  
Старый 28.08.2010, 18:51   #15
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,356
Бабло: $470735
По умолчанию

а чем мой вариант не катит? если боишься, что одни и те же ссылки будут мелькать очень часто, а другие наоборот редко - то извини, сам такие веса даешь и заставляешь им следовать.
Можно немного сглазить разброс этих весов - напишу функцию, которая это делает и все
или у тебя есть какая-то дополнительная сео логика? которую тоже нужно соблюсти, аля: на жирных страницах только жирные ссылки...ну или я не знаю какие там темы щас модны
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser
chesser вне форума  
Старый 28.08.2010, 19:37   #16
TerVer
Senior Member
 
Аватар для TerVer
 
Регистрация: 14.09.2007
Сообщений: 740
Бабло: $73721
ТС -->
автор темы ТС По умолчанию

Решили как-то мемберы гоуфака подарить подарки детям на новый год. Определились - коробка конфет каждому ребенку. Закупили K коробок. Опытным путем выяснили, в одну коробку помещается N конфет.
Пошли в магазин. Узнали, сортов конфет S и также узнали(спиздили наверно или в гугле нашли) сколько каких конфет было продано за последний год. В магазине условие: что одного сорта конфет можно покупать не меньше M. Решили, что покупать конфеты будут всех сортов(ну чтобы редкий сорт можно было бы хотя бы у кого-нибудь выменять) И в каждой коробке все конфеты будут разных сортов.
Теперь бы придумать им как разложить эти конфеты в соответствии со статистикой продаж. Т.е. % закупленных конфет каждого сорта от общего кол-ва конфет был бы наиболее близок к проценту продаж в стате.
Для всех примеров: конфет одного сорта купить можно не меньше 3,стата для каждого сорта от 10 до 20000
Пример1: Подарков 2000, сортов 10, в коробку помещается 5 штук,
Пример2: Подарков 700, сортов 200, в коробку помещается 7 штук
Пример1: Подарков 2000, сортов 500, в коробку помещается 5 штук

chesser рандом хорошо работает на больших дистанциях, тут он будет работать не красиво.
TerVer вне форума  
Старый 28.08.2010, 20:18   #17
alexpotemkin
Senior Member
 
Регистрация: 27.10.2007
Сообщений: 134
Бабло: $37333
По умолчанию

)))) с конфетами сильный пример
alexpotemkin вне форума  
Старый 28.08.2010, 20:43   #18
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,356
Бабло: $470735
По умолчанию

Цитата:
Сообщение от TerVer Посмотреть сообщение
chesser рандом хорошо работает на больших дистанциях, тут он будет работать не красиво.
Так я рандомом предлагал только выбирать кол-во страниц на странице, а то ты написал "ДО 5 ссылок", если ссылок будет ровно 5(или др константа), то первый рандом можно убрать, будет так
Код:
for (page=1 to 2000)  { // цикл по страницам
  for (page_url=1 to 5) {
    page_url = weight_random ($link[$url]) // выбор урл, согласно заданным весам распределений вероятностей, см ф-ю выше
  }
}
weight_random - это не обычный рандом, а тот о котором писали выше, т.е. число берется согласно взвешенным коэффициентам вероятности появления, т.е. согласно весам.
у меня своя функция есть, можно ее, но я думаю смыл тот же:
PHP код:
function getRand($arr) {

    
$sum array_sum($arr);
    
$rnd rand(1$sum);
    
$delta_prev 1;
    foreach(
$arr as $k=>$v) {
      if(
$rnd >= $delta_prev && $rnd < ($v $delta_prev)) {
        return 
$k;
      }
      else {
        
$delta_prev += $v;
      }
    }
    return;
  } 
т.е. суешь ей массив
PHP код:
array(
  
'url1' => 100,
  
'url2' => 1000,
  
'url3' => 500,
  
'url4' => 10000

и тогда url1 будет возвращаться функцией в 10 раз реже чем url2, в 5 раз реже url3 и в 100 раз реже url4. Т.е. при таком подходе чаще будет мелькать ссылка url4, т.к. у нее самый большой вес.
Осталось только пройтись по все страницам/подаркам и вынуть ссылки этой функцие 5 раз, если по 5 конфет/урлов на странице.
ну может опять не понял, но мне мой вариант нравится
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser
chesser вне форума  
Старый 28.08.2010, 20:54   #19
Юнга
white powder
 
Аватар для Юнга
 
Регистрация: 29.04.2007
Сообщений: 2,685
Бабло: $370670
По умолчанию

1) делаешь огромный массив в который добавляешь урлы
"для каждой ссылки есть статистика, которая выражается числом от 10 до 20000"
то бишь каждую ссылку добавляешь "число" раз.
2) потом мешаешь, мешаешь, мешаешь..
...???????...
4) профит.

результирующие наборы можно собирать хоть рандомом, хоть последовательно.
__________________
господин мойва любит вас 🙄https://t.me/musica_finale | у каждого есть история: https://anchor.fm/hibrokakbiz 🙉🎤🙊
Юнга вне форума  
Старый 28.08.2010, 20:59   #20
Юнга
white powder
 
Аватар для Юнга
 
Регистрация: 29.04.2007
Сообщений: 2,685
Бабло: $370670
По умолчанию

иначе - надо исследовать природу статистики - и вводить соответствующие коэффициенты, чтобы ссылки с весом 20000 не забивали ссылки с весом 10.
__________________
господин мойва любит вас 🙄https://t.me/musica_finale | у каждого есть история: https://anchor.fm/hibrokakbiz 🙉🎤🙊
Юнга вне форума  
Старый 28.08.2010, 21:04   #21
TerVer
Senior Member
 
Аватар для TerVer
 
Регистрация: 14.09.2007
Сообщений: 740
Бабло: $73721
ТС -->
автор темы ТС По умолчанию

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

всем откликнувшимся спасибо
TerVer вне форума  
Закрытая тема