Python-从10000个随机值创建稀疏矩阵表示

时间:2019-04-07 12:23:21

标签: python sparse-matrix

我要进行有关机场航班的作业,首先要创建一个稀疏矩阵(i,j和值)的表示形式,该稀疏矩阵的表示是从10000个随机数中按以下标准为1000x1000数组:

  • i和j必须在0-999之间,因为它们是数组的行和列
  • 值必须在1.0-5.0之间
  • i不能等于j
  • i和j只能出现一次

i是出发机场,j是到达机场,值是从i到j的旅行时间。

然后,我必须根据上述条件找到最大停靠2到8个机场A的往返行程。例如:

  • A,D,F,G,A是往返4站的合法往返路线
  • A,D,F,D,A不是合法的往返行程,因为D被两次访问了

注意:问题必须完全使用python内置库解决。没有像scipy和numpy这样的外部库被接受。

我已经尝试过运行一个10000个数字的循环,并根据上述标准为行,列和值分配一个随机数,但是我猜这不是分配所要求的,因为循环不会停止。

我猜i和j不是稀疏矩阵的实际iloc和j表示,而是那些值?我不知道。

除了用于往返实现的示例外,我目前没有其他有效的代码。虽然如果列表为空将引发错误:

projectName/Pods...ProjectName.debug.xcconfig

1 个答案:

答案 0 :(得分:0)

这是我建立稀疏矩阵的方式:

from collections import defaultdict
import random

max_location = 1000
min_value = 1.0
max_value = 5.0

sparse_matrix = defaultdict(list)

num_entries = 10000
for _ in range(num_entries):
    source = random.randint(0, max_location)
    dest = random.randint(0, max_location)
    value = random.uniform(min_value, max_value)

    sparse_matrix[source].append((dest, value))

这是将稀疏矩阵定义为字典,其中字典的键是行程的起点。键的值定义了您可以飞到的任何地方以及以元组列表的形式飞行到那里的时间。

请注意,我没有检查我是否正确地正确使用了randintuniform,如果使用此方法,则应查看这些函数的文档以了解是否有任何函数该解决方案中的一对一错误。