>  기사  >  웹 프론트엔드  >  JS는 탐욕 알고리즘을 기반으로 배낭 문제를 해결합니다.

JS는 탐욕 알고리즘을 기반으로 배낭 문제를 해결합니다.

小云云
小云云원래의
2017-12-07 15:57:581994검색

앞서 변화 문제를 해결하기 위해 그리디 알고리즘을 사용하는 JS에 대해 설명했습니다. 이번 글에서는 JS가 그리디 알고리즘을 기반으로 배낭 문제를 어떻게 해결하는지 소개하겠습니다.

탐욕 알고리즘: 문제를 해결할 때는 항상 현재 최선의 선택을 하세요. 즉, 그가 만든 것은 전체 최적해를 고려하지 않은 채 어떤 의미에서는 국소적 최적해에 불과했다. 최적해를 찾는 과정은 현재의 최적해를 얻는 것을 목표로 한다.

백팩 문제의 일부: 고정된 부피로 백팩에 넣을 수 있는 품목의 총 최대 가치

품목 A B C D
가격 50 220 60 60
사이즈 5 20 10 12
비율 10 11 6 5

비율에 따라 내림차순으로 최대한 많은 항목을

function greedy(values, weights, capacity){
  var returnValue = 0
  var remainCapacity = capacity
  var sortArray = []
  values.map((cur, index) =>{
    sortArray.push({
      'value': values[index],
      'weight': weights[index],
      'ratio': values[index]/weights[index]
    })
  })
  sortArray.sort(function(a, b){
    return b.ratio > a.ratio
  })
  console.log(sortArray)
  sortArray.map((cur,index) => {
    var num = parseInt(remainCapacity/cur.weight)
    console.log(num)
    remainCapacity -= num*cur.weight
    returnValue += num*cur.value
  })
  return returnValue
}
var items = ['A','B','C','D']
var values = [50,220,60,60]
var weights = [5,20,10,12]
var capacity = 32 //背包容积
greedy(values, weights, capacity) // 320

에 넣습니다. 관련 권장 사항:

JS가 탐욕 알고리즘을 사용하여 변경 문제를 해결하는 방법

php에서 탐욕 알고리즘 0-1 배낭 문제를 구현합니다

Java가 배낭 알고리즘을 구현하는 방법에 대한 인스턴스 분석


위 내용은 JS는 탐욕 알고리즘을 기반으로 배낭 문제를 해결합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.