Rechercher plusieurs annonces / site d'occasion

Fermé
Ockham - Modifié le 7 nov. 2020 à 16:51
 Ockham - 8 nov. 2020 à 18:05
Bonjour,
Sur un site de vente d'objets manufacturés (donc avec code-barres et multiples exemplaires).
Souhaitant proposer aux acheteurs de chercher des vendeurs proposant plusieurs des produits qu'ils recherchent, afin de minimiser les frais de port.

1) l'acheteur indique sa liste et identifie les objets.
2) L'algo pouvant être gourmand, il me semble qu'il faut des raccourcis.
3) Je pense prioriser les produits qui ont peu de vendeurs (>0!) pour rechercher s'ils en proposent d'autres. En effet, pour tout acheter, il faut nécessairement passer par eux.

Des pistes d'algorithme?

Merci d'avance.
A voir également:

4 réponses

yg_be Messages postés 22754 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 4 mai 2024 1 479
7 nov. 2020 à 18:10
bonjour,
cela dépend un peu dans quel contexte tu fais ce travail, et avec quels outils (et quelles connaissances).

si tu conçois ton propre algorithme, cela semble une bonne idée de prioritiser les produits avec peu de vendeurs, et les vendeurs avec beaucoup de produits.
en prioritisant ainsi, tu peux, au minimum, accélérer la recherche de la meilleure solution.

par ailleurs, il existe très probablement des algorithmes qui peuvent très rapidement trouver la meilleure solution. dans ce cas-là, ton travail consistera à exprimer ton problème pour pouvoir utiliser ces algorithmes.
0
Ça revient, à partir du tableau de
  • mes produits recherchés $mylist
  • des annonces de vendeurs $sell


à obtenir la liste des vendeurs par nombre décroissant de produits recherchés $best_sellers.

$sell = [ // sellers => products
  1 => [ 1 , 5 , 8 , 11],
  2 => [ 17 , 20 ], 
  3 => [ 2 , 12 ], 
  4 => [ 2 , 3 ],
  5 => [ 7 ]
  ] ;
  
  
$mylist = [ 1 , 2 , 3 , 4 , 5 ] ;

$best_sellers = [
  1 => [ 1 , 5 ],
  4 => [ 2 , 3 ]
  3 => [ 2 ]
  ]

0
yg_be Messages postés 22754 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 4 mai 2024 1 479 > Ockham
7 nov. 2020 à 22:27
merci de nous informer de tes réflexions.
0
yg_be Messages postés 22754 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 4 mai 2024 1 479 > Ockham
8 nov. 2020 à 16:34
tu as choisi d'écrire ton algorithme en PHP?
0
yg_be Messages postés 22754 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 4 mai 2024 1 479
8 nov. 2020 à 16:36
à la réflexion, je pense que le mieux est d'écrire l'algorithme toi-même.
l'optimisation rend l'algorithme plus complexe. à ta place, je commencerais pas écrire l'algorithme sans optimisation.
quand il fonctionnera parfaitement, je commencerais à l'opimiser.
0
jordane45 Messages postés 38157 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 4 mai 2024 4 655 > Ockham
8 nov. 2020 à 16:41
Bonjour,

J'ose croire que ta liste de vendeurs, et les produits qu'ils vendent, se trouvent dans une base de données ...
Dans ce cas, avec un peu de SQL et des fonctions du genre GROUP BY, COUNT, ORDER BY .... je pense qu'il serait assez simple de déterminer les vendeurs qui vendent le plus de produits de la liste désirée...

par ce que... si tu le traites en PHP comme tu sembles parti ..... il faudra espérer que tu n'aies pas trop de vendeurs ni de produits si tu ne veux pas que ton script rame à mort ...
0
"il existe très probablement des algorithmes qui peuvent très rapidement trouver la meilleure solution"

Ma question est: quels sont ces algorithmes ?
0
yg_be Messages postés 22754 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 4 mai 2024 1 479
7 nov. 2020 à 19:12
cela demande un peu de recherche et d'analyse, peut-être l'algorithme de Kuhn-Munkres, ou quelque-chose de proche.
0
Merci pour la piste.
Je regarde ça.
0
yg_be Messages postés 22754 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 4 mai 2024 1 479
8 nov. 2020 à 16:15
tu écris que l'algoritme peut être gourmand. combien aurais-tu de vendeurs possibles pour une liste?
0