【发布时间】:2020-08-12 16:30:16
【问题描述】:
当给定同义词列表时,我很难想出一个好的算法来形成邻接列表。
同义词列表以向量的向量形式提供。内部向量大小为 2,由 2 个同义词组成。
例如,
std::vector<std::vector<std::string>> synonyms{{"joy", "happy"}, {"happy",
"ecstatic"}, {"cheerful, ecstatic"}, {"big", "giant"}, {"giant", "gigantic"}};
所以这里我们有两组同义词:{joy, happy, ecstatic, cheerful} 和 {big, giant, gigantic}
我想使用std::unordered_map<std::string, std::set<std::string>> 从边缘列表中创建一个邻接列表。该值为set,因为需要对邻居进行排序。或者,该值可以是一个向量,然后我们将在最后对向量进行排序。
在给定边缘的情况下制作此邻接列表的最佳方法是什么?
对于这个邻接列表,我希望每个单词都有一个条目。所以在上面的例子中,我会有 7 个条目。对于每个条目,我想将它映射到它的同义词。比如:
{happy} -> {cheerful, ecstatic, joy}
{joy} -> {cheerful, ecstatic, happy}
{ecstatic} -> {cheerful, happy, joy}
{cheerful} -> {ecstatic, happy, joy}
{giant} -> {big, gigantic}
{big} -> {giant, gigantic}
{gigantic} -> {big, giant}
【问题讨论】:
-
@JohnFilleau 是的,对不起,我忘了包括那个。我只是在最后加了一段。这能说明问题吗?
-
所以输入被指定为
vector<vector<string>>,但实际上它是一对,因为内部向量只能有2个元素。 -
@JohnFilleau 实际上,如果这样更容易,您可以假设它是一对。比起事物的存储方式,我对算法更感兴趣。
标签: c++ graph language-agnostic adjacency-list