D'abord oui, ceci est un projet de devoirs pour ma classe Perl. Je ne cherche pas la réponse (bien que ce serait gentil). Si je comprends bien, j'ai besoin d'utiliser un BFS et une expression régulière pour organiser mes données pour l'utilisation. J'ai besoin d'une direction sur celui-ci. Comment utiliser un BFS? Est-ce que j'utilise une pile massive et passe par chaque élément de la pile? Dois-je utiliser une table de hachage géante? Est-ce que quelqu'un a travaillé sur ce problème? Comment l'as-tu fait? J'ai juste besoin d'une direction, c'est tout. Est-ce similaire à un BST? Est-ce possible sans utiliser le module graphique? Est-ce possible en utilisant des valeurs de hachage?Six degrés de Kevin Bacon en Perl
2
A
Répondre
5
Ce n'est pas une réponse , mais il est des notes vers votre réponse.
Vous êtes mieux servi en recherchant d'abord ce qu'est une première recherche dans un graphique.
En outre, si vous n'avez pas reçu d'expression régulière, vous pouvez envisager le problème de création de jetons et le rechercher. Peut-être que ce ne sera pas nécessaire. Vérifiez l'affectation et voyez si vous pouvez juste slurp dans certaines informations.
6
Voir Graph.
#!/usr/bin/perl
use autodie;
use strict; use warnings;
use Graph;
use Graph::TransitiveClosure::Matrix;
my $dat = 'kevin-bacon.dat';
my $kbg = Graph->new(undirected => 1);
open my $kbf, '<', $dat;
my %movies;
while (my $line = <$kbf>) {
last unless $line =~ /\S/;
chomp $line;
my ($u, $m, $v) = split /;/, $line;
$kbg->add_edge($u, $v);
$movies{"$u|$v"} = $movies{"$v|$u"} = $m;
}
my $tcm = Graph::TransitiveClosure::Matrix->new($kbg,
path_length => 1,
path_vertices => 1,
);
my ($u, $v) = ('Kevin Bacon', 'Yelena Maksimova');
if (my $n = $tcm->path_length($u, $v)) {
printf "%d degrees of separation between %s and %s\n", $n, $u, $v;
}
my @path = $tcm->path_vertices($u, $v);
for my $i (0 .. @path - 2) {
my ($u, $v) = @path[$i, $i + 1];
print qq{$u - $v: $movies{"$u|$v"}\n};
}
En utilisant kevin-bacon.dat
du projet Boost:
3 degrees of separation between Kevin Bacon and Yelena Maksimova Kevin Bacon - Elisabeth Shue: Hollow Man (2000) Elisabeth Shue - Lev Prygunov: Saint, The (1997) Lev Prygunov - Yelena Maksimova: Bezottsovshchina (1976)
Questions connexes
- 1. Traduction radians en degrés
- 2. Degrés symbole (comme en degrés Celsius/Fahrenheit) dans un TextView
- 3. Perl: analyser la chaîne encodée à six pans en tableau avec regex
- 4. Saisie de degrés précis en python
- 5. Exception avec Freetts lors de l'utilisation de kevin ou mbrola
- 6. Affichage des degrés décimaux
- 7. UIImage Rotation degrés personnalisés
- 8. Conversion des degrés de rotation en impulsion Box2D
- 9. rotation de 360 degrés en flash actionscript 3
- 10. WPF - Récupère l'angle en degrés d'un Vector3D vu de dessus
- 11. C# Rotation Bitmap 90 degrés
- 12. double limite à six virgule dans asp.net
- 13. Arcball Rotation à 90 degrés
- 14. UIImage iPhone Rotation 37,8 degrés
- 15. image rotation 10 degrés coupé
- 16. Twitter Data Mining: Degrés de séparation
- 17. Degrés de mesure (0-360) woo
- 18. Rotation de deux UIImageViews 360 degrés
- 19. JPEG sans perte Rotation (90/180/270 degrés) en Java?
- 20. évaluer les fonctions trig en degrés par opposition aux radians
- 21. Comment puis-je prouver par programmation le concept "Six Degrees of Separation"?
- 22. Comment fonctionne le flux de mise à jour Six Apart?
- 23. CLLocationManager et degrés d'en-tête dans l'iPhone
- 24. rotation Quaternion axe x 45 degrés
- 25. Flex Matrix rotate Image n degrés
- 26. Plugin jQuery Date Picker de Kevin Luck - Définir la date de fin dynamiquement
- 27. Conversion d'un n-uplet couleur RVB en code à six chiffres, en Python
- 28. Constantes de hachage en Perl
- 29. Matrices de matrices en Perl
- 30. Comment obtenir des données de stock en direct à la SIX Swiss Exchange?
... et pourquoi devez-vous utiliser une 'expression régulière laide'? Tu ne peux pas utiliser une belle? – pavium
Vous pourriez vraiment aimer Mastering Algorithms avec Perl de OReily. http://oreilly.com/catalog/9781565923980 – daotoad