Eu pensei que matriz associativa (ou seja, mapa ou dicionário) e tabela de hash eram o mesmo conceito, até que vi na Wikipedia que
Para dicionários com um número muito pequeno de ligações, pode fazer sentido implementar o dicionário usando uma lista de associações, uma lista vinculada de ligações. ...
A implementação de propósito geral usada com mais freqüência de uma matriz associativa é com uma tabela de hash: uma matriz de ligações, juntamente com uma função de hash que mapeia cada chave possível em um índice de matriz. ...
Os dicionários também podem ser armazenados em árvores de pesquisa binária ou em estruturas de dados especializadas em um tipo específico de chave, como árvores de raiz, tentativas, matrizes de Judy ou árvores de van Emde Boas. ...
Então, acho que meu problema reside no fato de não saber que a matriz associativa (ou seja, mapa ou dicionário) é um tipo de dados abstrato e a tabela de hash é uma estrutura de dados concreta, e diferentes estruturas de dados concretas podem ser usadas para implementar o método mesmo tipo de dado abstrato.
Minhas perguntas seriam
Qual é a diferença e a relação entre estruturas de dados abstratas e estruturas de dados concretas?
Quais exemplos são para cada um deles (estruturas de dados abstratas e concretas)? Quanto mais melhor.
Existe uma lista de quais estruturas de dados concretas podem ser usadas para implementar quais estruturas de dados abstratas? Seria bom ter um.