2012-11-16 3 views
0

다음 문제에 대해 해싱을 사용하는 Java 프로그램을 작성하려고합니다. 자연 언어 텍스트가 주어지면 텍스트의 각 단어가 나타나는 횟수로 구분되는 단어의 목록을 생성하십시오. 프로그램에 적절한 카운터를 삽입하여 해싱의 경험적 효율성과 해당 이론 결과를 비교하십시오.다음에 대한 해시 구현 방법

해시 테이블의 기본 원칙을 이해하지만 컴퓨터 프로그램에 구현하는 방법을 모르겠습니다. 내 교과서에는 예제가 없으며 제 교수는 수업 시간에 특정 사례를 검토하지 않았습니다.

필자는 프로그램이 파일의 텍스트를 먼저 스캔해야한다고 생각하지만 그 후에 어디로 가야하는지 전혀 알지 못합니다.

도움 주셔서 감사합니다.

+0

다음은 Java로 작성한 HashTable 클래스입니다. 도움이 될 수도 있습니다. https://github.com/JohnKurlak/HashTable/blob/master/HashTable.java. 단어를 얻기 위해 공백에서 텍스트를 분리하십시오. 현재 단어가 해시 테이블에 있으면 개수를 늘립니다. 현재 단어가 해시 테이블에 없으면 해당 슬롯에서 카운트를 0으로 설정합니다. –

+0

'java.util.Hashtable'과 당신 것의 차이점은 무엇입니까? –

답변

0

해시를 연구해야하는 것처럼 들립니다. 해싱은 일반적으로 값의 범위를 사용하여 더 작은 범위로 매핑합니다. 그래서 간단한 해시 함수는 다음과 같을 수 있습니다

public int hash(int value) 
{ 
    assert value >= 0 && value < 1000; 
    return value % 10; 
} 

그래서 내 해시 함수의 범위 (0 ~ 999)에서 번호를 받아 (0 ~ 9)로 매핑합니다. 좋은 해싱 함수는 결과 범위에 값을 균등하게 분배합니다.

목표는 각 단어를 해시 테이블의 색인으로 매핑하는 것입니다.이 예제는 예제와 같이 단순하지 않습니다. 문자열 해싱에 대해 조사해야합니다.

행운을 빈다.

1

내가 해석하는 바는 당신의 임무에 관한 것입니다.

파일을 단어로 분할하여 HashMap<String,Integer> (또는 해시 테이블 구현이있는지도)에 삽입한다고 가정합니다. 당신은 또한 삽입, 무작위 추출을지도하고지도상의 멤버십 테스트를하기로되어 있습니다.

그런 다음 서로 다른 크기의 파일에 대해 동일한 작업을 반복하고 이론적 인 결과에 비해 시간이 오래 걸리는 지 확인하십시오.

관련 문제