0

How best to buy 4 products from different sellers, assuming that purchases from each seller must be at least for a certain amount.

Below is the input data I have.

{
   "items":[
      {
         "name":"item1",
         "sellers":[
            {
               "name":"seller5",
               "price":"37.89"
            },
            {
               "name":"seller3",
               "price":"5.44"
            },
            {
               "name":"seller10",
               "price":"53.66"
            },
            {
               "name":"seller1",
               "price":"32.63"
            },
            {
               "name":"seller9",
               "price":"13.30"
            },
            {
               "name":"seller7",
               "price":"80.81"
            },
            {
               "name":"seller6",
               "price":"67.70"
            }
         ]
      },
      {
         "name":"item2",
         "sellers":[
            {
               "name":"seller10",
               "price":"73.70"
            },
            {
               "name":"seller7",
               "price":"58.72"
            },
            {
               "name":"seller3",
               "price":"55.40"
            },
            {
               "name":"seller5",
               "price":"77.89"
            },
            {
               "name":"seller9",
               "price":"42.52"
            },
            {
               "name":"seller8",
               "price":"50.04"
            },
            {
               "name":"seller1",
               "price":"29.16"
            }
         ]
      },
      {
         "name":"item3",
         "sellers":[
            {
               "name":"seller8",
               "price":"91.76"
            },
            {
               "name":"seller2",
               "price":"42.48"
            },
            {
               "name":"seller3",
               "price":"59.96"
            },
            {
               "name":"seller7",
               "price":"98.46"
            },
            {
               "name":"seller9",
               "price":"31.96"
            },
            {
               "name":"seller6",
               "price":"23.28"
            }
         ]
      },
      {
         "name":"item4",
         "sellers":[
            {
               "name":"seller1",
               "price":"23.81"
            },
            {
               "name":"seller6",
               "price":"63.45"
            },
            {
               "name":"seller9",
               "price":"27.44"
            },
            {
               "name":"seller2",
               "price":"51.22"
            },
            {
               "name":"seller3",
               "price":"82.37"
            },
            {
               "name":"seller8",
               "price":"86.12"
            }
         ]
      }
   ]
}

The algorithm will help you buy products in various online stores that have free delivery from a given amount.

The given example has only 1764 combinations, but ultimately I want to increase the number of products and sellers.

I wrote a brute force algorithm, but it is very time consuming. Is there an optimal algorithm?

  • *"I wrote a brute force algorithm, but it is very time consuming."* - can you share the attempted code first? We can start from there. – Daniel Hao Mar 10 '23 at 15:17
  • Can you also provide sample input as well as expected output. You state the problem as buying 4 products, will the number of products increase? You state 4 vendors, will the number of vendors increase? Is your goal to spend a certain amount x with each vendor or is it to buy the given number of products at least cost, or some other goal? – itprorh66 Mar 10 '23 at 15:22
  • I would solve this with an A* search. What is the minimum purchase per seller? – btilly Mar 10 '23 at 22:19
  • @DanielHao I did something like: product 1 | product 2 | product 4 | product 5 -------- seller 1 | seller 1 | seller 1 | seller 1 | seller 1 -------- seller 1 | seller 1 | seller 1 | seller 1 | seller 2 -------- seller 1 | seller 1 | seller 1 | seller 1 | seller 3 -------- seller 1 | seller 1 | seller 1 | seller 2 | seller 1 -------- and I sum cost for each row for each seller, check if seller cost if >= x and save sum. – DebuggingUnicorn Mar 14 '23 at 07:07
  • @itprorh66 number of vendors and products can increase. Vendors max 60, products max 30 – DebuggingUnicorn Mar 14 '23 at 07:07
  • @btilly minimum purchase per seller is 45 but it will be var – DebuggingUnicorn Mar 14 '23 at 07:07

0 Answers0