给定两个文件树A和B,是否有可能确定将A转换为B所必需的最短操作序列或短操作序列?
操作可以是:
这个问题已经困扰了我一段时间。目前我有以下基本想法:
谢谢!
操作可以是:
- 创建一个新的空文件夹
- 创建一个带任何内容的新文件
- 删除文件
- 删除空文件夹
- 重命名文件
- 重命名文件夹
- 将一个文件移动到另一个现有文件夹中
- 将一个文件夹移动到另一个现有文件夹中
这个问题已经困扰了我一段时间。目前我有以下基本想法:
- 计算数据库:
- 存储文件名和它们的CRC
- 然后,查找所有没有子文件夹的文件夹,并从它们包含的文件的CRC计算CRC以及从它们包含的文件的总大小计算大小
- 向上升级树以使每个父文件夹都有一个CRC
- 使用具有数据库A和数据库B的以下循环:
- 计算A∩B并从两个数据库中删除此交集。
- 使用内部连接在A和B中查找匹配的CRC,首先是文件夹,按大小降序排列
- 当有结果时,使用第一个结果进行文件夹或文件移动(必要时可能创建新文件夹),从结果的源行中删除并从两个数据库中删除。如果有移动,则在db A中更新新位置的父文件夹的CRC。
- 然后删除数据库A中引用的所有文件和文件夹,并创建引用的数据库B中的文件和文件夹。
谢谢!