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

2024-09-25 00:35:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个关于机场航班的家庭作业,首先我要用10000个随机数为1000x1000数组创建一个稀疏矩阵(I,j和值)的表示,标准如下:

  • i和j必须介于0-999之间,因为数组的行和列是
  • 值必须介于1.0到5.0之间
  • 我不能等于j
  • 我和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表示,而是它们的值?我不知道。你知道吗

除了往返实现的示例之外,我目前没有其他工作代码。如果列表为空,则将引发错误:

dNext = {
    0: [],
    1: [4, 2, 0],
    2: [1, 4],
    3: [0],
    4: [3, 1]
}

def findRoundTrips(trip, n, trips):
    if (trip[0] == trip[-1]) and (1 < len(trip) <= n + 1):
        trips.append(trip.copy())
        return
    for x in dNext[trip[-1]]:
        if ((x not in trip[1:]) and (len(trip) < n)) or (x == trip[0]):
            trip.append(x)
            findRoundTrips(trip, n, trips)
            trip.pop()

Tags: andin标准lenif矩阵数组trip
1条回答
网友
1楼 · 发布于 2024-09-25 00:35:55

下面是如何构建稀疏矩阵:

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,如果您使用了这两个函数,您应该查看这些函数的文档,以确定此解决方案中是否存在任何off-by-one错误。你知道吗

相关问题 更多 >