100% found this document useful (1 vote)
57 views

Graph Algorithms Practical Examples in Apache Spark and Neo4j 1st Edition Mark Needham All Chapters Instant Download

Examples

Uploaded by

woodywaidazs
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
57 views

Graph Algorithms Practical Examples in Apache Spark and Neo4j 1st Edition Mark Needham All Chapters Instant Download

Examples

Uploaded by

woodywaidazs
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 55

Download the Full Version of textbook for Fast Typing at textbookfull.

com

Graph Algorithms Practical Examples in Apache


Spark and Neo4j 1st Edition Mark Needham

https://textbookfull.com/product/graph-algorithms-practical-
examples-in-apache-spark-and-neo4j-1st-edition-mark-needham/

OR CLICK BUTTON

DOWNLOAD NOW

Download More textbook Instantly Today - Get Yours Now at textbookfull.com


Recommended digital products (PDF, EPUB, MOBI) that
you can download immediately if you are interested.

Graph Algorithms for Data Science: With examples in Neo4j


1st Edition Tomaž Bratanic

https://textbookfull.com/product/graph-algorithms-for-data-science-
with-examples-in-neo4j-1st-edition-tomaz-bratanic/

textboxfull.com

Spark in Action - Second Edition: Covers Apache Spark 3


with Examples in Java, Python, and Scala Jean-Georges
Perrin
https://textbookfull.com/product/spark-in-action-second-edition-
covers-apache-spark-3-with-examples-in-java-python-and-scala-jean-
georges-perrin/
textboxfull.com

High Performance Spark Best Practices for Scaling and


Optimizing Apache Spark 1st Edition Holden Karau

https://textbookfull.com/product/high-performance-spark-best-
practices-for-scaling-and-optimizing-apache-spark-1st-edition-holden-
karau/
textboxfull.com

Stream Processing with Apache Spark Mastering Structured


Streaming and Spark Streaming 1st Edition Gerard Maas

https://textbookfull.com/product/stream-processing-with-apache-spark-
mastering-structured-streaming-and-spark-streaming-1st-edition-gerard-
maas/
textboxfull.com
Graph Data Science with Neo4j: Learn how to use Neo4j 5
with Graph Data Science library 2.0 and its Python driver
for your project Scifo
https://textbookfull.com/product/graph-data-science-with-neo4j-learn-
how-to-use-neo4j-5-with-graph-data-science-library-2-0-and-its-python-
driver-for-your-project-scifo/
textboxfull.com

Practical Neo4j Jordan Gregory

https://textbookfull.com/product/practical-neo4j-jordan-gregory/

textboxfull.com

Introducing .NET for Apache Spark: Distributed Processing


for Massive Datasets 1st Edition Ed Elliott

https://textbookfull.com/product/introducing-net-for-apache-spark-
distributed-processing-for-massive-datasets-1st-edition-ed-elliott/

textboxfull.com

Beginning Apache Spark Using Azure Databricks: Unleashing


Large Cluster Analytics in the Cloud 1st Edition Robert
Ilijason
https://textbookfull.com/product/beginning-apache-spark-using-azure-
databricks-unleashing-large-cluster-analytics-in-the-cloud-1st-
edition-robert-ilijason/
textboxfull.com

Beginning Apache Spark Using Azure Databricks: Unleashing


Large Cluster Analytics in the Cloud Robert Ilijason

https://textbookfull.com/product/beginning-apache-spark-using-azure-
databricks-unleashing-large-cluster-analytics-in-the-cloud-robert-
ilijason/
textboxfull.com
Co
m
pl
im
en
ts
of
Graph
Algorithms
Practical Examples in Apache Spark & Neo4j

Mark Needham &


Amy E. Hodler
Graph Algorithms
Practical Examples in
Apache Spark and Neo4j

Mark Needham and Amy E. Hodler

Beijing Boston Farnham Sebastopol Tokyo


Graph Algorithms
by Mark Needham and Amy E. Hodler
Copyright © 2019 Amy Hodler and Mark Needham. All rights reserved.
Printed in the United States of America.
Published by O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472.
O’Reilly books may be purchased for educational, business, or sales promotional use. Online editions are
also available for most titles (http://oreilly.com). For more information, contact our corporate/institutional
sales department: 800-998-9938 or [email protected].

Acquisition Editor: Jonathan Hassell Indexer: Judy McConville


Editor: Jeff Bleiel Interior Designer: David Futato
Production Editor: Deborah Baker Cover Designer: Karen Montgomery
Copy Editor: Tracy Brown Illustrator: Rebecca Demarest
Proofreader: Rachel Head

May 2019: First Edition

Revision History for the First Edition


2019-04-15: First Release

See http://oreilly.com/catalog/errata.csp?isbn=9781492047681 for release details.

The O’Reilly logo is a registered trademark of O’Reilly Media, Inc. Graph Algorithms, the cover image of a
European garden spider, and related trade dress are trademarks of O’Reilly Media, Inc.
While the publisher and the authors have used good faith efforts to ensure that the information and
instructions contained in this work are accurate, the publisher and the authors disclaim all responsibility
for errors or omissions, including without limitation responsibility for damages resulting from the use of
or reliance on this work. Use of the information and instructions contained in this work is at your own
risk. If any code samples or other technology this work contains or describes is subject to open source
licenses or the intellectual property rights of others, it is your responsibility to ensure that your use
thereof complies with such licenses and/or rights.
This work is part of a collaboration between O’Reilly and Neo4j. See our statement of editorial independ‐
ence.

978-1-492-05781-9
[LSI]
Table of Contents

Preface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix

Foreword. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii

1. Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
What Are Graphs? 2
What Are Graph Analytics and Algorithms? 3
Graph Processing, Databases, Queries, and Algorithms 6
OLTP and OLAP 7
Why Should We Care About Graph Algorithms? 8
Graph Analytics Use Cases 12
Conclusion 14

2. Graph Theory and Concepts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15


Terminology 15
Graph Types and Structures 16
Random, Small-World, Scale-Free Structures 17
Flavors of Graphs 18
Connected Versus Disconnected Graphs 19
Unweighted Graphs Versus Weighted Graphs 19
Undirected Graphs Versus Directed Graphs 21
Acyclic Graphs Versus Cyclic Graphs 22
Sparse Graphs Versus Dense Graphs 23
Monopartite, Bipartite, and k-Partite Graphs 24
Types of Graph Algorithms 27
Pathfinding 27
Centrality 27
Community Detection 27

iii
Summary 28

3. Graph Platforms and Processing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29


Graph Platform and Processing Considerations 29
Platform Considerations 29
Processing Considerations 30
Representative Platforms 31
Selecting Our Platform 31
Apache Spark 32
Neo4j Graph Platform 34
Summary 37

4. Pathfinding and Graph Search Algorithms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39


Example Data: The Transport Graph 41
Importing the Data into Apache Spark 43
Importing the Data into Neo4j 44
Breadth First Search 45
Breadth First Search with Apache Spark 46
Depth First Search 48
Shortest Path 49
When Should I Use Shortest Path? 50
Shortest Path with Neo4j 51
Shortest Path (Weighted) with Neo4j 53
Shortest Path (Weighted) with Apache Spark 54
Shortest Path Variation: A* 56
Shortest Path Variation: Yen’s k-Shortest Paths 58
All Pairs Shortest Path 60
A Closer Look at All Pairs Shortest Path 60
When Should I Use All Pairs Shortest Path? 62
All Pairs Shortest Path with Apache Spark 62
All Pairs Shortest Path with Neo4j 63
Single Source Shortest Path 65
When Should I Use Single Source Shortest Path? 67
Single Source Shortest Path with Apache Spark 67
Single Source Shortest Path with Neo4j 69
Minimum Spanning Tree 70
When Should I Use Minimum Spanning Tree? 71
Minimum Spanning Tree with Neo4j 72
Random Walk 73
When Should I Use Random Walk? 74
Random Walk with Neo4j 74
Summary 75

iv | Table of Contents
5. Centrality Algorithms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Example Graph Data: The Social Graph 79
Importing the Data into Apache Spark 80
Importing the Data into Neo4j 81
Degree Centrality 81
Reach 81
When Should I Use Degree Centrality? 82
Degree Centrality with Apache Spark 83
Closeness Centrality 84
When Should I Use Closeness Centrality? 85
Closeness Centrality with Apache Spark 86
Closeness Centrality with Neo4j 88
Closeness Centrality Variation: Wasserman and Faust 89
Closeness Centrality Variation: Harmonic Centrality 91
Betweenness Centrality 92
When Should I Use Betweenness Centrality? 94
Betweenness Centrality with Neo4j 95
Betweenness Centrality Variation: Randomized-Approximate Brandes 98
PageRank 99
Influence 99
The PageRank Formula 100
Iteration, Random Surfers, and Rank Sinks 102
When Should I Use PageRank? 103
PageRank with Apache Spark 103
PageRank with Neo4j 105
PageRank Variation: Personalized PageRank 107
Summary 108

6. Community Detection Algorithms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109


Example Graph Data: The Software Dependency Graph 112
Importing the Data into Apache Spark 114
Importing the Data into Neo4j 114
Triangle Count and Clustering Coefficient 114
Local Clustering Coefficient 115
Global Clustering Coefficient 116
When Should I Use Triangle Count and Clustering Coefficient? 116
Triangle Count with Apache Spark 117
Triangles with Neo4j 117
Local Clustering Coefficient with Neo4j 118
Strongly Connected Components 119
When Should I Use Strongly Connected Components? 120
Strongly Connected Components with Apache Spark 120

Table of Contents | v
Strongly Connected Components with Neo4j 122
Connected Components 124
When Should I Use Connected Components? 124
Connected Components with Apache Spark 125
Connected Components with Neo4j 126
Label Propagation 127
Semi-Supervised Learning and Seed Labels 129
When Should I Use Label Propagation? 129
Label Propagation with Apache Spark 130
Label Propagation with Neo4j 131
Louvain Modularity 133
When Should I Use Louvain? 137
Louvain with Neo4j 138
Validating Communities 143
Summary 143

7. Graph Algorithms in Practice. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145


Analyzing Yelp Data with Neo4j 145
Yelp Social Network 146
Data Import 147
Graph Model 147
A Quick Overview of the Yelp Data 148
Trip Planning App 152
Travel Business Consulting 157
Finding Similar Categories 162
Analyzing Airline Flight Data with Apache Spark 166
Exploratory Analysis 168
Popular Airports 168
Delays from ORD 170
Bad Day at SFO 172
Interconnected Airports by Airline 174
Summary 181

8. Using Graph Algorithms to Enhance Machine Learning. . . . . . . . . . . . . . . . . . . . . . . . . . 183


Machine Learning and the Importance of Context 183
Graphs, Context, and Accuracy 184
Connected Feature Extraction and Selection 185
Graphy Features 187
Graph Algorithm Features 188
Graphs and Machine Learning in Practice: Link Prediction 190
Tools and Data 190
Importing the Data into Neo4j 192

vi | Table of Contents
The Coauthorship Graph 193
Creating Balanced Training and Testing Datasets 194
How We Predict Missing Links 199
Creating a Machine Learning Pipeline 200
Predicting Links: Basic Graph Features 201
Predicting Links: Triangles and the Clustering Coefficient 214
Predicting Links: Community Detection 218
Summary 224
Wrapping Things Up 224

A. Additional Information and Resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225

Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231

Table of Contents | vii


Preface

The world is driven by connections—from financial and communication systems to


social and biological processes. Revealing the meaning behind these connections
drives breakthroughs across industries in areas such as identifying fraud rings and
optimizing recommendations to evaluating the strength of a group and predicting
cascading failures.
As connectedness continues to accelerate, it’s not surprising that interest in graph
algorithms has exploded because they are based on mathematics explicitly developed
to gain insights from the relationships between data. Graph analytics can uncover the
workings of intricate systems and networks at massive scales—for any organization.
We are passionate about the utility and importance of graph analytics as well as the
joy of uncovering the inner workings of complex scenarios. Until recently, adopting
graph analytics required significant expertise and determination, because tools and
integrations were difficult and few knew how to apply graph algorithms to their
quandaries. It is our goal to help change this. We wrote this book to help organiza‐
tions better leverage graph analytics so that they can make new discoveries and
develop intelligent solutions faster.

What’s in This Book


This book is a practical guide to getting started with graph algorithms for developers
and data scientists who have experience using Apache Spark™ or Neo4j. Although our
algorithm examples utilize the Spark and Neo4j platforms, this book will also be help‐
ful for understanding more general graph concepts, regardless of your choice of
graph technologies.
The first two chapters provide an introduction to graph analytics, algorithms, and
theory. The third chapter briefly covers the platforms used in this book before we
dive into three chapters focusing on classic graph algorithms: pathfinding, centrality,
and community detection. We wrap up the book with two chapters showing how

ix
graph algorithms are used within workflows: one for general analysis and one for
machine learning.
At the beginning of each category of algorithms, there is a reference table to help you
quickly jump to the relevant algorithm. For each algorithm, you’ll find:

• An explanation of what the algorithm does


• Use cases for the algorithm and references to where you can learn more
• Example code providing concrete ways to use the algorithm in Spark, Neo4j, or
both

Conventions Used in This Book


The following typographical conventions are used in this book:
Italic
Indicates new terms, URLs, email addresses, filenames, and file extensions.
Constant width
Used for program listings, as well as within paragraphs to refer to program ele‐
ments such as variable or function names, databases, data types, environment
variables, statements, and keywords.
Constant width bold
Shows commands or other text that should be typed literally by the user.
Constant width italic
Shows text that should be replaced with user-supplied values or by values deter‐
mined by context.

This element signifies a tip or suggestion.

This element signifies a general note.

x | Preface
This element indicates a warning or caution.

Using Code Examples


Supplemental material (code examples, exercises, etc.) is available for download at
https://bit.ly/2FPgGVV.
This book is here to help you get your job done. In general, if example code is offered
with this book, you may use it in your programs and documentation. You do not
need to contact us for permission unless you’re reproducing a significant portion of
the code. For example, writing a program that uses several chunks of code from this
book does not require permission. Selling or distributing a CD-ROM of examples
from O’Reilly books does require permission. Answering a question by citing this
book and quoting example code does not require permission. Incorporating a signifi‐
cant amount of example code from this book into your product’s documentation does
require permission.
We appreciate, but do not require, attribution. An attribution usually includes the
title, author, publisher, and ISBN. For example: “Graph Algorithms by Amy E. Hodler
and Mark Needham (O’Reilly). Copyright 2019 Amy E. Hodler and Mark Needham,
978-1-492-05781-9.”
If you feel your use of code examples falls outside fair use or the permission given
above, feel free to contact us at [email protected].

O’Reilly Online Learning


For almost 40 years, O’Reilly has provided technology and
business training, knowledge, and insight to help companies
succeed.

Our unique network of experts and innovators share their knowledge and expertise
through books, articles, conferences, and our online learning platform. O’Reilly’s
online learning platform gives you on-demand access to live training courses, in-
depth learning paths, interactive coding environments, and a vast collection of text
and video from O’Reilly and 200+ other publishers. For more information, please
visit http://oreilly.com.

Preface | xi
How to Contact Us
Please address comments and questions concerning this book to the publisher:

O’Reilly Media, Inc.


1005 Gravenstein Highway North
Sebastopol, CA 95472
800-998-9938 (in the United States or Canada)
707-829-0515 (international or local)
707-829-0104 (fax)

We have a web page for this book, where we list errata, examples, and any additional
information. You can access this page at http://bit.ly/graph-algorithms.
To comment or ask technical questions about this book, send email to bookques‐
[email protected].
For more information about our books, courses, conferences, and news, see our web‐
site at http://www.oreilly.com.
Find us on Facebook: http://facebook.com/oreilly
Follow us on Twitter: http://twitter.com/oreillymedia
Watch us on YouTube: http://www.youtube.com/oreillymedia

Acknowledgments
We’ve thoroughly enjoyed putting together the material for this book and thank all
those who assisted. We’d especially like to thank Michael Hunger for his guidance, Jim
Webber for his invaluable edits, and Tomaz Bratanic for his keen research. Finally, we
greatly appreciate Yelp permitting us to use its rich dataset for powerful examples.

xii | Preface
Foreword

What do the following things all have in common: marketing attribution analysis,
anti-money laundering (AML) analysis, customer journey modeling, safety incident
causal factor analysis, literature-based discovery, fraud network detection, internet
search node analysis, map application creation, disease cluster analysis, and analyzing
the performance of a William Shakespeare play. As you might have guessed, what
these all have in common is the use of graphs, proving that Shakespeare was right
when he declared, “All the world’s a graph!”
Okay, the Bard of Avon did not actually write graph in that sentence, he wrote stage.
However, notice that the examples listed above all involve entities and the relation‐
ships between them, including both direct and indirect (transitive) relationships.
Entities are the nodes in the graph—these can be people, events, objects, concepts, or
places. The relationships between the nodes are the edges in the graph. Therefore,
isn’t the very essence of a Shakespearean play the active portrayal of entities (the
nodes) and their relationships (the edges)? Consequently, maybe Shakespeare could
have written graph in his famous declaration.
What makes graph algorithms and graph databases so interesting and powerful isn’t
the simple relationship between two entities, with A being related to B. After all, the
standard relational model of databases instantiated these types of relationships in its
foundation decades ago, in the entity relationship diagram (ERD). What makes
graphs so remarkably important are directional relationships and transitive relation‐
ships. In directional relationships, A may cause B, but not the opposite. In transitive
relationships, A can be directly related to B and B can be directly related to C, while A
is not directly related to C, so that consequently A is transitively related to C.
With these transitivity relationships—particularly when they are numerous and
diverse, with many possible relationship/network patterns and degrees of separation
between the entities—the graph model uncovers relationships between entities that
otherwise may seem disconnected or unrelated, and are undetected by a relational

xiii
database. Hence, the graph model can be applied productively and effectively in many
network analysis use cases.
Consider this marketing attribution use case: person A sees the marketing campaign;
person A talks about it on social media; person B is connected to person A and sees
the comment; and, subsequently, person B buys the product. From the marketing
campaign manager’s perspective, the standard relational model fails to identify the
attribution, since B did not see the campaign and A did not respond to the campaign.
The campaign looks like a failure, but its actual success (and positive ROI) is discov‐
ered by the graph analytics algorithm through the transitive relationship between the
marketing campaign and the final customer purchase, through an intermediary
(entity in the middle).
Next, consider an anti-money laundering (AML) analysis case: persons A and C are
suspected of illicit trafficking. Any interaction between the two (e.g., a financial trans‐
action in a financial database) would be flagged by the authorities, and heavily scruti‐
nized. However, if A and C never transact business together, but instead conduct
financial dealings through safe, respected, and unflagged financial authority B, what
could pick up on the transaction? The graph analytics algorithm! The graph engine
would discover the transitive relationship between A and C through intermediary B.
In internet searches, major search engines use a hyperlinked network (graph-based)
algorithm to find the central authoritative node across the entire internet for any
given set of search words. The directionality of the edge is vital in this case, since the
authoritative node in the network is the one that many other nodes point at.
With literature-based discovery (LBD)—a knowledge network (graph-based) applica‐
tion enabling significant discoveries across the knowledge base of thousands (or even
millions) of research journal articles—“hidden knowledge” is discovered only
through the connection between published research results that may have many
degrees of separation (transitive relationships) between them. LBD is being applied to
cancer research studies, where the massive semantic medical knowledge base of
symptoms, diagnoses, treatments, drug interactions, genetic markers, short-term
results, and long-term consequences could be “hiding” previously unknown cures or
beneficial treatments for the most impenetrable cases. The knowledge could already
be in the network, but we need to connect the dots to find it.
Similar descriptions of the power of graphing can be given for the other use cases lis‐
ted earlier, all examples of network analysis through graph algorithms. Each case
deeply involves entities (people, objects, events, actions, concepts, and places) and
their relationships (touch points, both causal and simple associations).
When considering the power of graphing, we should keep in mind that perhaps the
most powerful node in a graph model for real-world use cases might be “context.”
Context may include time, location, related events, nearby entities, and more. Incor‐

xiv | Foreword
porating context into the graph (as nodes and as edges) can thus yield impressive pre‐
dictive analytics and prescriptive analytics capabilities.
Mark Needham and Amy Hodler’s Graph Algorithms aims to broaden our knowledge
and capabilities around these important types of graph analyses, including algo‐
rithms, concepts, and practical machine learning applications of the algorithms.
From basic concepts to fundamental algorithms to processing platforms and practical
use cases, the authors have compiled an instructive and illustrative guide to the won‐
derful world of graphs.

— Kirk Borne, PhD


Principal Data Scientist and Executive Advisor
Booz Allen Hamilton
March 2019

Foreword | xv
CHAPTER 1
Introduction

Graphs are one of the unifying themes of computer science—an abstract representation that
describes the organization of transportation systems, human interactions, and telecommuni‐
cation networks. That so many different structures can be modeled using a single formalism
is a source of great power to the educated programmer.
—The Algorithm Design Manual, by Steven S. Skiena (Springer), Distinguished Teach‐
ing Professor of Computer Science at Stony Brook University

Today’s most pressing data challenges center around relationships, not just tabulating
discrete data. Graph technologies and analytics provide powerful tools for connected
data that are used in research, social initiatives, and business solutions such as:

• Modeling dynamic environments from financial markets to IT services


• Forecasting the spread of epidemics as well as rippling service delays and outages
• Finding predictive features for machine learning to combat financial crimes
• Uncovering patterns for personalized experiences and recommendations

As data becomes increasingly interconnected and systems increasingly sophisticated,


it’s essential to make use of the rich and evolving relationships within our data.
This chapter provides an introduction to graph analysis and graph algorithms. We’ll
start with a brief refresher about the origin of graphs before introducing graph algo‐
rithms and explaining the difference between graph databases and graph processing.
We’ll explore the nature of modern data itself, and how the information contained in
connections is far more sophisticated than what we can uncover with basic statistical
methods. The chapter will conclude with a look at use cases where graph algorithms
can be employed.

1
What Are Graphs?
Graphs have a history dating back to 1736, when Leonhard Euler solved the “Seven
Bridges of Königsberg” problem. The problem asked whether it was possible to visit
all four areas of a city connected by seven bridges, while only crossing each bridge
once. It wasn’t.
With the insight that only the connections themselves were relevant, Euler set the
groundwork for graph theory and its mathematics. Figure 1-1 depicts Euler’s progres‐
sion with one of his original sketches, from the paper “Solutio problematis ad geome‐
triam situs pertinentis”.

Figure 1-1. The origins of graph theory. The city of Königsberg included two large islands
connected to each other and the two mainland portions of the city by seven bridges. The
puzzle was to create a walk through the city, crossing each bridge once and only once.

While graphs originated in mathematics, they are also a pragmatic and high fidelity
way of modeling and analyzing data. The objects that make up a graph are called
nodes or vertices and the links between them are known as relationships, links, or
edges. We use the terms nodes and relationships in this book: you can think of nodes
as the nouns in sentences, and relationships as verbs giving context to the nodes. To
avoid any confusion, the graphs we talk about in this book have nothing to do with
graphing equations or charts as in Figure 1-2.

2 | Chapter 1: Introduction
Figure 1-2. A graph is a representation of a network, often illustrated with circles to rep‐
resent entities which we call nodes, and lines to represent relationships.

Looking at the person graph in Figure 1-2, we can easily construct several sentences
which describe it. For example, person A lives with person B who owns a car, and
person A drives a car that person B owns. This modeling approach is compelling
because it maps easily to the real world and is very “whiteboard friendly.” This helps
align data modeling and analysis.
But modeling graphs is only half the story. We might also want to process them to
reveal insight that isn’t immediately obvious. This is the domain of graph algorithms.

What Are Graph Analytics and Algorithms?


Graph algorithms are a subset of tools for graph analytics. Graph analytics is some‐
thing we do—it’s the use of any graph-based approach to analyze connected data.
There are various methods we could use: we might query the graph data, use basic
statistics, visually explore the graphs, or incorporate graphs into our machine learn‐
ing tasks. Graph pattern–based querying is often used for local data analysis, whereas
graph computational algorithms usually refer to more global and iterative analysis.
Although there is overlap in how these types of analysis can be employed, we use the
term graph algorithms to refer to the latter, more computational analytics and data
science uses.

What Are Graph Analytics and Algorithms? | 3


Graph algorithms provide one of the most potent approaches to analyzing connected
data because their mathematical calculations are specifically built to operate on rela‐
tionships. They describe steps to be taken to process a graph to discover its general
qualities or specific quantities. Based on the mathematics of graph theory, graph algo‐
rithms use the relationships between nodes to infer the organization and dynamics of
complex systems. Network scientists use these algorithms to uncover hidden infor‐
mation, test hypotheses, and make predictions about behavior.

Network Science
Network science is an academic field strongly rooted in graph theory that is concerned
with mathematical models of the relationships between objects. Network scientists
rely on graph algorithms and database management systems because of the size, con‐
nectedness, and complexity of their data.
There are many fantastic resources for complexity and network science. Here are a
few references for you to explore.

• Network Science, by Albert-László Barabási, is an introductory ebook


• Complexity Explorer offers online courses
• The New England Complex Systems Institute provides various resources and
papers

Graph algorithms have widespread potential, from preventing fraud and optimizing
call routing to predicting the spread of the flu. For instance, we might want to score
particular nodes that could correspond to overload conditions in a power system. Or
we might like to discover groupings in the graph which correspond to congestion in a
transport system.
In fact, in 2010 US air travel systems experienced two serious events involving multi‐
ple congested airports that were later studied using graph analytics. Network scien‐
tists P. Fleurquin, J. J. Ramasco, and V. M. Eguíluz used graph algorithms to confirm
the events as part of systematic cascading delays and use this information for correc‐
tive advice, as described in their paper, “Systemic Delay Propagation in the US Air‐
port Network”.
To visualize the network underpinning air transportation Figure 1-3 was created by
Martin Grandjean for his article, “Connected World: Untangling the Air Traffic Net‐
work”. This illustration clearly shows the highly connected structure of air transpor‐
tation clusters. Many transportation systems exhibit a concentrated distribution of
links with clear hub-and-spoke patterns that influence delays.

4 | Chapter 1: Introduction
Figure 1-3. Air transportation networks illustrate hub-and-spoke structures that evolve
over multiple scales. These structures contribute to how travel flows.

Graphs also help uncover how very small interactions and dynamics lead to global
mutations. They tie together the micro and macro scales by representing exactly
which things are interacting within global structures. These associations are used to
forecast behavior and determine missing links. Figure 1-4 is a foodweb of grassland
species interactions that used graph analysis to evaluate the hierarchical organization
and species interactions and then predict missing relationships, as detailed in the
paper by A. Clauset, C. Moore, and M. E. J. Newman, “Hierarchical Structure and the
Prediction of Missing Links in Network”.

What Are Graph Analytics and Algorithms? | 5


Figure 1-4. This foodweb of grassland species uses graphs to correlate small-scale interac‐
tions to larger structure formation.

Graph Processing, Databases, Queries, and Algorithms


Graph processing includes the methods by which graph workloads and tasks are car‐
ried out. Most graph queries consider specific parts of the graph (e.g., a starting
node), and the work is usually focused in the surrounding subgraph. We term this
type of work graph local, and it implies declaratively querying a graph’s structure, as
explained in the book Graph Databases, by Ian Robinson, Jim Webber, and Emil
Eifrem (O’Reilly). This type of graph-local processing is often utilized for real-time
transactions and pattern-based queries.
When speaking about graph algorithms, we are typically looking for global patterns
and structures. The input to the algorithm is usually the whole graph, and the output
can be an enriched graph or some aggregate value such as a score. We categorize such
processing as graph global, and it implies processing a graph’s structure using compu‐
tational algorithms (often iteratively). This approach sheds light on the overall nature
of a network through its connections. Organizations tend to use graph algorithms to
model systems and predict behavior based on how things disseminate, important
components, group identification, and the overall robustness of the system.
There may be some overlap in these definitions—sometimes we can use processing of
an algorithm to answer a local query, or vice versa—but simplistically speaking
whole-graph operations are processed by computational algorithms and subgraph
operations are queried in databases.
Traditionally, transaction processing and analysis have been siloed. This was an
unnatural split based on technology limitations. Our view is that graph analytics

6 | Chapter 1: Introduction
drives smarter transactions, which creates new data and opportunities for further
analysis. More recently there’s been a trend to integrate these silos for more real-time
decision making.

OLTP and OLAP


Online transaction processing (OLTP) operations are typically short activities like
booking a ticket, crediting an account, booking a sale, and so forth. OLTP implies
voluminous low-latency query processing and high data integrity. Although OLTP
may involve only a small number of records per transaction, systems process many
transactions concurrently.
Online analytical processing (OLAP) facilitates more complex queries and analysis
over historical data. These analyses may include multiple data sources, formats, and
types. Detecting trends, conducting “what-if ” scenarios, making predictions, and
uncovering structural patterns are typical OLAP use cases. Compared to OLTP,
OLAP systems process fewer but longer-running transactions over many records.
OLAP systems are biased toward faster reading without the expectation of transac‐
tional updates found in OLTP, and batch-oriented operation is common.
Recently, however, the line between OLTP and OLAP has begun to blur. Modern
data-intensive applications now combine real-time transactional operations with ana‐
lytics. This merging of processing has been spurred by several advances in software,
such as more scalable transaction management and incremental stream processing,
and by lower-cost, large-memory hardware.
Bringing together analytics and transactions enables continual analysis as a natural
part of regular operations. As data is gathered—from point-of-sale (POS) machines,
manufacturing systems, or internet of things (IoT) devices—analytics now supports
the ability to make real-time recommendations and decisions while processing. This
trend was observed several years ago, and terms to describe this merging include
translytics and hybrid transactional and analytical processing (HTAP). Figure 1-5 illus‐
trates how read-only replicas can be used to bring together these different types of
processing.

Graph Processing, Databases, Queries, and Algorithms | 7


Figure 1-5. A hybrid platform supports the low latency query processing and high data
integrity required for transactions while integrating complex analytics over large
amounts of data.

According to Gartner:
[HTAP] could potentially redefine the way some business processes are executed, as
real-time advanced analytics (for example, planning, forecasting and what-if analysis)
becomes an integral part of the process itself, rather than a separate activity performed
after the fact. This would enable new forms of real-time business-driven decision-
making process. Ultimately, HTAP will become a key enabling architecture for intelli‐
gent business operations.
As OLTP and OLAP become more integrated and begin to support functionality pre‐
viously offered in only one silo, it’s no longer necessary to use different data products
or systems for these workloads—we can simplify our architecture by using the same
platform for both. This means our analytical queries can take advantage of real-time
data and we can streamline the iterative process of analysis.

Why Should We Care About Graph Algorithms?


Graph algorithms are used to help make sense of connected data. We see relation‐
ships within real-world systems from protein interactions to social networks, from
communication systems to power grids, and from retail experiences to Mars mission
planning. Understanding networks and the connections within them offers incredible
potential for insight and innovation.
Graph algorithms are uniquely suited to understanding structures and revealing pat‐
terns in datasets that are highly connected. Nowhere is the connectivity and interac‐

8 | Chapter 1: Introduction
tivity so apparent than in big data. The amount of information that has been brought
together, commingled, and dynamically updated is impressive. This is where graph
algorithms can help make sense of our volumes of data, with more sophisticated ana‐
lytics that leverage relationships and enhance artificial intelligence contextual infor‐
mation.
As our data becomes more connected, it’s increasingly important to understand its
relationships and interdependencies. Scientists that study the growth of networks
have noted that connectivity increases over time, but not uniformly. Preferential
attachment is one theory on how the dynamics of growth impact structure. This idea,
illustrated in Figure 1-6, describes the tendency of a node to link to other nodes that
already have a lot of connections.

Figure 1-6. Preferential attachment is the phenomenon where the more connected a
node is, the more likely it is to receive new links. This leads to uneven concentrations and
hubs.

In his book, Sync: How Order Emerges from Chaos in the Universe, Nature, and Daily
Life (Hachette), Steven Strogatz provides examples and explains different ways that
real-life systems self-organize. Regardless of the underlying causes, many researchers

Why Should We Care About Graph Algorithms? | 9


believe that how networks grow is inseparable from their resulting shapes and hierar‐
chies. Highly dense groups and lumpy data networks tend to develop, with complex‐
ity growing along with data size. We see this clustering of relationships in most real-
world networks today, from the internet to social networks like the gaming
community shown in Figure 1-7.

Figure 1-7. This gaming community analysis shows a concentration of connections


around just 5 of 382 communities.

The network analysis shown in Figure 1-7 was created by Francesco D’Orazio of Pul‐
sar to help predict the virality of content and inform distribution strategies. D’Orazio
found a correlation between the concentration of a community’s distribution and the
speed of diffusion of a piece of content.
This is significantly different than what an average distribution model would predict,
where most nodes would have the same number of connections. For instance, if the
World Wide Web had an average distribution of connections, all pages would have
about the same number of links coming in and going out. Average distribution mod‐
els assert that most nodes are equally connected, but many types of graphs and many
real networks exhibit concentrations. The web, in common with graphs like travel
and social networks, has a power-law distribution with a few nodes being highly con‐
nected and most nodes being modestly connected.

10 | Chapter 1: Introduction
Power Law
A power law (also called a scaling law) describes the relationship between two quanti‐
ties where one quantity varies as a power of another. For instance, the area of a cube is
related to the length of its sides by a power of 3. A well-known example is the Pareto
distribution or “80/20 rule,” originally used to describe the situation where 20% of a
population controlled 80% of the wealth. We see various power laws in the natural
world and networks.

Trying to “average out” a network generally won’t work well for investigating relation‐
ships or forecasting, because real-world networks have uneven distributions of nodes
and relationships. We can readily see in Figure 1-8 how using an average of character‐
istics for data that is uneven would lead to incorrect results.

Figure 1-8. Real-world networks have uneven distributions of nodes and relationships
represented in the extreme by a power-law distribution. An average distribution assumes
most nodes have the same number of relationships and results in a random network.

Because highly connected data does not adhere to an average distribution, network
scientists use graph analytics to search for and interpret structures and relationship
distributions in real-world data.
There is no network in nature that we know of that would be described by the random
network model.

Why Should We Care About Graph Algorithms? | 11


Exploring the Variety of Random
Documents with Different Content
— Oh, e, minä en naura enkä ollenkaan luule teidän valehdelleen
minulle. Siinäpä se onkin, että minä en sitä luule, se on, paha kyllä,
totinen tosi! No, sanokaa, oletteko te lukenut Puškinia, Oneginin…Te
puhuitte äsken juuri Tatjanasta?

— En, en ole vielä lukenut, mutta aion lukea. Minulla ei ole


ennakkoluuloja, Karamazov. Minä tahdon kuulla kummankin puolen
kannan. Minkätähden te kysyitte?

— Muuten vain.

— Sanokaa, Karamazov, halveksitteko te minua kauheasti? —


tokaisi äkkiä Kolja ja ojentautui suoraksi Aljošan edessä aivan kuin
asettuen asentoon. — Olkaa hyvä, aivan kiertelemättä.

— Halveksinko teitä? — sanoi Aljoša katsellen häntä ihmeissään.


— Mistä syystä? Minusta on vain surullista, että niin oivallista
luonnetta kuin teidän, joka ei vielä ole päässyt aloittamaan elämää,
on jo turmellut kaikki tuo karkea ja jonninjoutava.

— Älkää olko huolissanne minun luonteestani, — keskeytti Kolja


jossakin määrin itserakkaasti, — mutta että minä olen epäluuloinen,
se on kyllä totta. Tyhmän epäluuloinen, karkeasti epäluuloinen. Te
naurahditte äsken, ja minusta tuntui heti, että te ikäänkuin…

— Ah, minä naurahdin aivan muulle. Tiedättekö, mille minä


naurahdin: luin äskettäin erään Venäjällä asuneen Saksanmaan
saksalaisen lausunnon nykyisestä opiskelevasta nuorisostamme.
»Näyttäkää», kirjoittaa hän, »venäläiselle koulupojalle tähtimaailman
kartta, josta hänellä tähän saakka ei ole ollut minkäänlaista käsitystä,
niin hän palauttaa teille huomenna tuon kartan korjattuna.» Ei mitään
tietoja ja äärettömän suuret luulot itsestään — sitä tahtoi saksalainen
sanoa venäläisestä koululaisesta.

— Ah, sehän on aivan oikein! — alkoi Kolja yhtäkkiä nauraa


hohottaa, — ihan superlatiivissa oikein, aivan prikulleen! Bravo,
saksalainen! Ei huomannut kuitenkaan kollo myös hyvää puolta, vai
mitä arvelette? Suuret luulot itsestään — olkoon menneeksi, se
johtuu nuoruudesta, se korjautuu, jos vain sen korjautuminen on
välttämätöntä, mutta sen sijaan on myös itsenäistä henkeä miltei
lapsuudesta asti, sen sijaan on ajatuksen ja vakaumuksen rohkeutta
eikä tuota heidän makkaroilla kasvatettua orjailuaan auktoriteettien
edessä… Mutta joka tapauksessa saksalainen sanoi hyvin! Bravo,
saksalainen! Vaikka saksalaiset pitää sittenkin kuristaa. Olkoonpa,
että he ovat vahvoja tieteissä, heidät pitää sittenkin kuristaa…

— Miksi sitten kuristaa? — hymyili Aljoša.

— No, minä lörpöttelin kenties, myönnän sen. Minä olen toisinaan


hirveän lapsellinen, ja kun joskus pääsen alkuun, en jaksa hillitä
itseäni ja olen valmis lörpöttelemään kaikenlaista roskaa. Mutta
kuulkaahan, me täällä lavertelemme joutavia, mutta tuo lääkäri
näkyy takertuneen sinne omituisen pitkäksi aikaa. Hän saattaa
muuten tarkastaa siellä myös »äitikultaa» ja kipeäjalkaista
Ninotškaa. Tiedättekö, tuo Ninotška miellytti minua. Hän kuiskasi
minulle sisään tullessani: »Miksi ette ole tullut aikaisemmin?» Ja
semmoisella äänellä, moittivasti! Minusta hän näyttää hyvin
hyväntahtoiselta ja säälittävältä.

— Niin, niin! Kunhan rupeatte käymään talossa niin näette,


millainen olento hän on. Teille on hyvin hyödyllistä tutustua tuollaisiin
olentoihin, jotta oppisitte pitämään arvossa vielä paljon muutakin,
minkä opitte tietämään juuri tutustuessanne tämmöisiin olentoihin, —
huomautti Aljoša lämpimästi. — Se kaikkein parhaiten tekee teistä
toisenlaisen.

— Oi, kuinka olen pahoillani ja soimaan itseäni siitä, etten tullut


aikaisemmin! — huudahti Kolja katkerin mielin.

— Niin, se on hyvin ikävää. Te näitte itse, kuinka suuresti te


ilahdutitte onnetonta pienokaista! Ja miten pahoillaan hän olikaan
teitä odotellessaan!

— Älkää puhuko minulle siitä! Te raatelette sydäntäni. Muuten se


on minulle aivan oikein: minä en tullut tänne itserakkauteni takia,
itsekkään itserakkauden ja alhaisen vallanhimon takia, josta en koko
elämäni aikana pääse vapautumaan, vaikka ponnistelen koko
elämäni ajan. Minä näen sen nyt, minä olen monessa suhteessa
konna, Karamazov.

— Ei, te olette oivallinen luonne, vaikka pilattu, ja minä ymmärrän


erinomaisen hyvin, miksi teillä oli vaikutusvaltaa tuohon
sairaalloisesta vaikutuksille alttiiseen kelpo poikaan! — vastasi
Aljoša tulisesti.

— Ja tätä sanotte minulle te! — huudahti Kolja. — Ja minä kun


luulin, ajatelkaahan, jo usean kerran nyt täällä ollessani, että te
halveksitte minua! Jospa vain tietäisitte, kuinka suuressa arvossa
pidän teidän mielipidettänne!

— Mutta oletteko te todellakin noin epäluuloinen? Tuossa iässä!


No, ajatelkaahan, minä juuri ajattelinkin tuolla huoneessa
katsellessani teitä teidän kertoessanne, että te mahdatte olla hyvin
epäluuloinen.
— Joko ajattelittekin? Kylläpä teillä on silmä, te näette, näette!
Lyön vetoa, että se tapahtui siinä paikassa, kun minä kerroin
hanhesta. Juuri siinä paikassa minusta tuntui, että te halveksitte
minua syvästi sen takia, että minulla on kiire esiintuomaan uljuuttani,
ja aloinpa yhtäkkiä vihatakin teitä siitä ja rupesin puhumaan puuta
heinää. Sitten minusta tuntui (se oli äsken juuri täällä) siinä paikassa,
kun minä sanoin: »Jos Jumalaa ei olisi, niin hänet pitäisi keksiä»,
että minä olen kovin kärkäs esiintuomaan sivistystäni, etenkin kun
olin tuon fraasin lukenut kirjasta. Mutta minä vannon teille, että minä
en pyrkinyt loistamaan kerskuakseni, vaan muuten vain, en tiedä
miksi, ilosta, totta totisesti, se oli ikäänkuin ilosta… vaikka se on
syvästi häpeällinen piirre, että ihminen tuppautuu kaikkia
vaivaamaan ilosta. Minä tiedän sen. Mutta sen sijaan minä olen nyt
vakuutettu siitä, että te ette halveksi minua, vaan että minä olin
kaiken tuon ottanut vain omasta päästäni. Oi, Karamazov, minä olen
hyvin onneton. Minä kuvittelen toisinaan Herra ties mitä, että kaikki
nauravat minulle, koko maailma, ja silloin minä, silloin olen valmis
tuhoamaan koko olevaisuuden.

— Ja kiusaatte ympärillänne olevia, — hymyili Aljoša.

— Ja kiusaan ympärilläni olevia, varsinkin äitiäni. Karamazov,


sanokaa, olenko minä nyt hyvin naurettava?

— Älkää ajatelko sitä, älkää ollenkaan ajatelko sitä! — huudahti


Aljoša. — Ja mitä on naurettava? Vähänkö on tapauksia, joissa
ihminen on naurettava tai näyttää siltä? Mutta nykyjään melkein
kaikki lahjakkaat ihmiset hirveästi pelkäävät olevansa naurettavia, ja
se on heidän onnettomuutensa. Minua vain ihmetyttää, että te olette
niin varhain alkanut sitä tuntea, vaikka minä muuten kyllä jo kauan
olen huomannut tämmöistä muissakin. Nykyjään melkein jo lapsetkin
ovat alkaneet potea tätä. Se on melkein hulluutta. Tähän
itserakkauden haamuun on pukeutunut itse piru ja tunkeutunut koko
sukupolveen, — piru juuri, — lisäsi Aljoša ollenkaan naurahtamatta,
niinkuin häneen kiinteästi katsova Kolja oli luullut hänen tekevän. —
Te olette niinkuin kaikki muutkin, — lopetti Aljoša, — se on niinkuin
monet, mutta ei pidä olla sellainen kuin kaikki ovat, siinä se on.

— Siitäkin huolimatta, että kaikki ovat sellaisia?

— Niin, siitä huolimatta, että kaikki ovat sellaisia. Olkaa te yksin


toisenlainen. Te olette todellakin toisenlainen kuin kaikki muut: tehän
ette nyt hävennyt tunnustaa sitä, mikä on huonoa ja naurettavaakin.
Mutta kuka nykyjään sen tunnustaa? Ei kukaan, on lakattu
tuntemasta itsensä tuomitsemisen tarvettakin. Olkaa toisenlainen
kuin kaikki; vaikka te yksinänne jäisitte semmoiseksi, niin olkaa
kuitenkin sellainen.

— Suurenmoista! — Minä en ole erehtynyt teihin nähden. Te


kykenette lohduttamaan. Oi, kuinka minä olenkaan pyrkinyt
läheisyyteenne, Karamazov, kuinka kauan olenkaan etsinyt
tilaisuutta kohdata teidät! Oletteko todella tekin ajatellut minusta
samaa? Äsken te sanoitte ajatelleenne minusta samaa.

— Niin, minä olen kuullut teistä ja ajatellut samoin teistä… ja jos


osaksi itserakkauskin pani teidät nyt tätä kysymään, niin ei se tee
mitään.

— Tiedättekö, Karamazov, meidän selityksemme muistuttaa


rakkaudentunnustusta, — lausui Kolja omituisen raukealla ja
häpeilevällä äänellä. — Eikö se ole naurettavaa, eikö se ole
naurettavaa?
— Ei ole ollenkaan naurettavaa, ja vaikka olisikin naurettavaa, niin
ei se mitään tee, sillä se on hyvää, — hymyili Aljoša valoisaa hymyä.

— Mutta tiedättekö, Karamazov, myöntäkää, että teitä itseännekin


nyt hiukan hävettää minun kanssani… Minä näen sen silmistä, —
naurahti Kolja hieman viekkaasti, mutta samalla miltei onnellisena.

— Mikä hävettäisi?

— Miksi te sitten punastuitte?

— Tehän sen niin teitte, että minä punastuin! — alkoi Aljoša


nauraa ja tuli tosiaankin aivan punaiseksi. — No niin, hiukan
hävettää, Jumala ties miksi, en tiedä miksi… — mutisi hän miltei
hämillään.

— Oi, kuinka minä teitä rakastan ja kunnioitan tällä hetkellä, siitä


juuri, että teitäkin jokin hävettää minun kanssani! Sillä tekin olette
aivan niinkuin minä! — huudahti Kolja aivan riemuissaan. Hänen
poskensa hehkuivat, hänen silmänsä loistivat.

— Kuulkaahan, Kolja, teistä tulee muun muassa myöskin hyvin


onneton ihminen elämässä, — sanoi Aljoša äkkiä jostakin syystä.

— Minä tiedän sen, tiedän sen. Kuinka te tiedätte kaikki noin


edeltäpäin! — vahvisti heti Kolja.

— Mutta kokonaisuudessaan te kuitenkin siunaatte elämää.

— Aivan niin! Hurraa! Te olette profeetta! Oi, meistä tulee ystävät,


Karamazov. Tiedättekö, minua ihastuttaa kaikkein enimmän se, että
te kohtelette minua aivan niinkuin vertaistanne. Mutta me emme ole
vertaisia, ei emme ole vertaisia, te olette korkeammalla! Mutta
meistä tulee ystävät. Tiedättekö minä olen koko viime kuukauden
ajan sanonut itselleni: »Joko meistä hänen kanssaan tulee heti
ikuiset ystävät tai me jo ensikerrasta asti olemme vihamiehiä
hautaan saakka!»

— Ja näin puhuessanne te tietysti jo rakastitte minua! — nauroi


Aljoša iloisesti.

— Rakastin, hirveästi rakastin, rakastin ja haaveilin teistä! Kuinka


te tiedättekin tuon kaiken edeltäpäin? Kas, tuossa on tohtorikin.
Herra Jumala, hän sanoo jotakin, katsokaa, millaiset hänen
kasvonsa ovat!

7.

Iljuša

Tohtori tuli ulos tuvasta taas turkkiinsa kääriytyneenä ja lakki


päässä. Hänen kasvonsa osoittivat miltei suuttumusta ja inhoa,
ikäänkuin hän yhä olisi pelännyt tahrautuvansa jostakin. Hän silmäsi
sivumennen ympäri eteisen ja katsahti tällöin ankarasti Aljošaan ja
Koljaan. Aljoša viittasi ovesta ajomiehelle, ja vaunut, joissa tohtori oli
tullut, ajoivat ulko-oven luo. Alikapteeni riensi kiireesti tohtorin
jäljessä ja taivuttautuen melkein vempeleeksi hänen edessään
pysähdytti hänet saadakseen kuulla viimeisen sanan. Mies-raukan
kasvot ilmaisivat masennusta, katse oli pelästynyt.

— Teidän ylhäisyytenne, teidän ylhäisyytenne… ihanko todella?…


— alkoi hän, mutta ei puhunut loppuun, vaan löi vain kämmeniään
yhteen epätoivoissaan, katsellen kuitenkin yhä vieläkin rukoilevasti
tohtoriin, aivan kuin tohtorin sana nyt tosiaankin voisi muuttaa poika-
paran saaman tuomion.

— Minkäpä sille voi! Minä en ole Jumala, — vastasi tohtori


huolettomalla, vaikkakin tavan mukaan vakuuttavalla äänellä.

— Tohtori… Teidän ylhäisyytenne… Ja tuleeko se pian, joko pian?

— Val-mis-tau-tu-kaa kaikkeen, — sanoi tohtori pannen painoa


joka tavulle, ja luoden silmänsä alas hän valmistautui harppaamaan
kynnyksen yli vaunujen luo.

— Teidän ylhäisyytenne, Kristuksen tähden! — pysähdytti hänet


alikapteeni vielä kerran pelästyneenä. — Teidän ylhäisyytenne!…
Eikö siis mikään, eikö mikään, kerrassaan mikään nyt pelasta?…

— Se ei nyt rii-pu minusta, — lausui tohtori kärsimättömästi, —


mutta kuitenkin, hm, — pysähtyi hän äkkiä, — jos te esimerkiksi
voisitte… lä-het-tää… potilaanne… heti ja vähääkään viivyttelemättä
(sanat »heti ja vähääkään viivyttelemättä» tohtori lausui ei vain
ankarasti, vaan melkein vihaisesti, niin että alikapteeni ihan vavahti)
Sy-ra-kuu-saan, niin… uusien suotui-si-en il-mas-tol-lis-ten
olosuhteitten johdosta… voisi kenties ta-pah-tu-a…

— Syrakuusaan! — huudahti alikapteeni aivan kuin ei vielä


ymmärtäisi mitään.

— Syrakuusa — se on Sisiliassa, — tokaisi äkkiä kuuluvasti Kolja


selitykseksi. Tohtori katsoi häneen.

— Sisiliaan! Herranen aika, teidän ylhäisyytenne, — joutui


alikapteeni aivan ymmälle, — tehän näitte! — Hän levitti molemmat
kätensä osoittaen ympärillä olevaa sisustusta. — Entä äitikulta, entä
perhe?

— Ei-ei, ei perhettä Sisiliaan, vaan perheenne on vietävä


Kaukaasiaan, varhain keväällä… tyttärenne Kaukaasiaan ja
vaimonne… sen jälkeen kuin hänkin on ollut Kau-kaa-si-as-sa
jäsenkolotustensa takia… on heti sen jälkeen lä-he-tet-tä-vä
Pariisiin, psy-ki-at-ri, tohtori Le-pel-le-tier'n parantolaan, minä voisin
antaa teille hänelle osoitetun kirjelipun, ja silloin… voisi kenties
tapahtua…

— Tohtori, tohtori! Tehän näette! — levitti taas alikapteeni käsiään


osoittaen epätoivoissaan eteisen paljaita hirsiseiniä.

— Se ei enää ole minun asiani, — naurahti tohtori, — minä sanoin


vain sen, mitä tie-de saattaa sanoa teidän kysyessänne viimeisiä
keinoja, mutta kaikki muu… valitan…

— Älkää olko huolissanne, lääkäri, minun koirani ei pure teitä, —


tokaisi Kolja kovalla äänellä huomattuaan tohtorin hieman
levottomana katsovan kynnykselle asettunutta Perezvonia. Koljan
äänessä oli vihainen sointu. Sanan »lääkäri» tohtorin asemesta hän
oli sanonut tahallaan ja, kuten hän itse myöhemmin ilmoitti,
»loukatakseen».

— Mitä tä-mä on? — tohtori nakkasi päätään katsoen ihmeissään


Koljaan. — Mi-kä tämä on? — kääntyi hän äkkiä Aljošan puoleen
ikäänkuin tahtoen tältä selitystä.

— Tämä on Perezvonin isäntä, lääkäri, älkää huolehtiko minun


persoonastani, — tokaisi Kolja taas.
— Zvonin? — toisti lääkäri tajuamatta, mitä Perezvon oli.

— Hän ei tiedä missä on. Hyvästi, lääkäri, me tapaamme


toisemme
Syrakuusassa.

— Kuka t-tä-mä on? Kuka, kuka? — kysyi tohtori aivan


vimmastuneena.

— Hän on täkäläisiä koulupoikia, tohtori, hän on kujeilija, älkää


välittäkö hänestä, — sanoi Aljoša kiireesti ja rypistäen kulmiaan. —
Kolja, olkaa vaiti! — huudahti hän Krasotkinille. — Ei pidä välittää
hänestä, tohtori, — toisti hän jo hiukan kärsimättömämmin.

— Sel-kään, sel-kään pitää sille antaa, selkään! — polki jalkaansa


tohtori, joka oli hirveän raivostunut.

— Mutta tiedättekö, lääkäri, minun Perezvonini voi ehkä purrakin!


— lausui Kolja värisevällä äänellä, hän kalpeni ja hänen silmänsä
leimahtivat. — Ici, Perezvon!

— Kolja, jos sanotte vain sanankin vielä, niin minä katkaisen


välimme ainaiseksi, — huudahti Aljoša mahtavasti.

— Lääkäri, on ainoastaan yksi olento koko maailmassa, joka voi


käskeä Nikolai Krasotkinia, ja se on tämä mies (Kolja osoitti Aljošaa);
häntä minä tottelen, hyvästi!

Hän syöksähti paikaltaan, avasi oven ja meni kiireesti


huoneeseen. Perezvon syöksyi hänen jälkeensä. Tohtori seisoi vielä
viitisen sekuntia kuin jähmettyneenä ja katseli Aljošaa, sitten hän
sylkäisi ja lähti nopeasti vaunuja kohti toistellen kuuluvasti: »Tämä,
tämä, en tiedä, mitä tämä on!» Alikapteeni kiiruhti auttamaan häntä
vaunuihin. Aljoša meni huoneeseen Koljan jäljessä. Tämä seisoi jo
Iljušan vuoteen ääressä. Iljuša piti kiinni hänen kädestään ja kutsui
isäänsä. Hetkisen kuluttua tuli alikapteenikin takaisin.

— Isä, isä, tule tänne… me… — alkoi Iljuša lepertää hyvin


kiihtyneenä, mutta ei nähtävästi jaksanut jatkaa, vaan ojensi äkkiä
molemmat laihtuneet kätensä eteenpäin ja syleili niin kovasti kuin
jaksoi yhtaikaa heitä kumpaakin, sekä Koljaa että isäänsä, yhdistäen
heidät syleilyynsä ja painautuen itse heitä vastaan. Alikapteeni alkoi
yhtäkkiä nytkähdellä kuulumattomista nyyhkytyksistä, Koljan huulet
ja leuka alkoivat vavahdella.

— Isä, isä! Miten sääli minun onkaan sinua, isä! -— voihki Iljuša
katkerasti.

— Iljušetška… kullanmuruni… tohtori sanoi… sinä tulet


terveeksi… tulemme onnellisiksi… tohtori… — alkoi alikapteeni
puhua.

— Ah, isä! Tiedänhän minä, mitä uusi tohtori sinulle sanoi


minusta… Näinhän minä! — huudahti Iljuša ja puristi taas lujasti,
kaikin voimin, heitä kumpaakin vastaansa painaen kasvonsa isänsä
olkapäähän.

— Isä, älä itke… ja kun minä kuolen, niin ota sinä hyvä poika,
toinen… valitse itse heistä kaikista, ota hyvä, pane sen nimeksi Iljuša
ja rakasta häntä minun sijastani…

— Ole vaiti, ukko, sinä tulet terveeksi! — huudahti äkkiä Krasotkin


aivan kuin vihastuneena.
— Äläkä sinä, isä, unhota minua koskaan, — jatkoi Iljuša, — käy
haudallani… ja tiedätkö mitä, isä, hautaa minut sen meidän ison
kivemme luo, jonka luokse me yhdessä kävelimme, ja käy siellä
luonani Krasotkinin kanssa iltaisin… Ja Perezvon… Minä odotan
teitä… Isä, isä!

Hänen äänensä katkesi, kaikki kolme seisoivat syleillen toisiaan


eivätkä enää puhuneet mitään. Ninotškakin nojatuolissaan itki hiljaa,
ja yhtäkkiä, nähdessään kaikkien itkevän, äitikin alkoi kyynelehtiä.

— Iljušetška! Iljušetška! — huudahteli hän.

Krasotkin irtautui viimein Iljušan syleilystä.

— Hyvästi, ukko, minua odottaa äiti päivälliselle, — lausui hän


kiireesti. — Kuinka ikävää, että en ilmoittanut hänelle aikaisemmin!
Hän on varmaan hyvin levoton… Mutta heti päivällisen jälkeen tulen
luoksesi koko päiväksi, koko illaksi, ja kerron sinulle niin paljon, niin
paljon! Perezvonin tuon myös mukanani, mutta nyt vien sen
mennessäni, sillä se alkaa poissaollessani ulvoa ja häiritsee sinua;
näkemiin!

Ja hän juoksi ulos eteiseen. Hän ei tahtonut itkeä, mutta eteisessä


hän kuitenkin rupesi itkemään. Tässä tilassa hänet tapasi Aljoša.

— Kolja, teidän on ehdottomasti pidettävä sananne ja tultava,


muuten hänelle tulee hirveä suru, — lausui Aljoša tiukasti.

— Ehdottomasti! Oi, kuinka kiroan itseäni, että en ole käynyt


aikaisemmin, — mutisi Kolja itkien ja häpeämättä itkemistään.
Samassa alikapteeni aivan kuin hyppäsi yhtäkkiä ulos huoneesta ja
sulki heti oven jälkeensä. Hänen kasvonsa olivat raivostuneet, huulet
värisivät. Hän asettui molempien nuorukaisten eteen ja ojensi
molemmat kätensä ylös.

— Minä en tahdo hyvää poikaa! Minä en tahdo toista poikaa! —


kuiskasi hän rajusti, hampaitaan kiristellen. — Jos unhotan sinut,
Jerusalem, niin tarttukoon kieleni…

Hän ei puhunut loppuun, vaan oli kuin läkähtymäisillään, ja vaipui


voimattomana polvilleen puisen penkin eteen. Painaen molemmat
nyrkkinsä päätään vastaan hän alkoi nyyhkyttää oudosti vikisten,
ponnistaen samalla kaikki voimansa, ettei hänen vikinänsä kuuluisi
tupaan. Kolja riensi kadulle.

— Hyvästi, Karamazov! Tuletteko itse? — huudahti hän jyrkästi ja


vihaisesti Aljošalle.

— Illalla tulen ehdottomasti.

— Mitä hän puhui Jerusalemista… Mitä se oli olevinaan?

— Se on raamatusta: »Jos unhotan sinut, Jerusalem», — toisin


sanoen minä unhotan kaikki, mikä minulle on kalleinta, jos vaihdan
semmoiseen, joka viehättää…

— Ymmärrän, riittää! Tulkaa vain itse! Ici, Perezvon! — huusi hän


hyvin tuimasti koiralleen ja lähti pitkin, nopein askelin harppaamaan
kotiinsa.

Yhdestoista kirja Veli Ivan Fjodorovitš


1.

Grušenjkan luona

Aljoša suuntasi kulkunsa Kirkkotorille, kauppiaanleski Morozovin


taloon, Grušenjkan luo. Tämä oli jo aikaisin aamulla lähettänyt hänen
luokseen Fenjan tuomaan hartaan pyynnön, että hän pistäytyisi
Grušenjkan luona. Kyseltyään Fenjalta Aljoša sai tietää, että rouva
oli ollut jonkin suuren ja erikoisen levottomuuden vallassa jo eilisestä
lähtien. Koko tuon kahden kuukauden aikana, joka oli kulunut Mitjan
vangitsemisesta, Aljoša oli useasti käynyt rouva Morozovin talossa
sekä omasta aloitteestaan että Mitjan asioilla. Noin kolmen päivän
kuluttua Mitjan vangitsemisesta oli Grušenjka ankarasti sairastunut
ja oli nyt ollut lähes viisi viikkoa sairaana. Yhden viikon noista
viidestä hän oli maannut tiedottomana. Hänen kasvonsa olivat
suuresti muuttuneet, ne olivat laihtuneet ja kellastuneet, vaikka hän
oli jo melkein kaksi viikkoa saanut olla ulkosalla. Mutta Aljošan
mielestä hänen kasvonsa olivat tulleet tavallaan vielä
puoleensavetävämmiksi, ja hänestä oli mieluisaa Grušenjkan luo
astuessaan kohdata tämän katse. Siinä katseessa oli ikäänkuin
vahvistuneena jotakin lujaa ja järkevää. Se ilmaisi jotakin henkistä
murrosta, siinä ilmeni jokin muuttumaton, nöyrä, mutta jalo ja
peruuttamaton päättäväisyys. Kulmakarvojen väliin otsaan oli
ilmestynyt pieni pystysuora ryppy, joka antoi hänen kauniille
kasvoilleen keskitetyn miettiväisyyden leiman, mikä ensi silmäyksellä
näytti melkeinpä ankaralta. Entisestä kevytmielisyydestä ei ollut
jälkeäkään näkyvissä. Omituista oli Aljošasta myöskin se, että
kaikesta onnettomuudesta huolimatta, mikä oli kohdannut
naisparkaa, morsianta, jonka sulhanen oli vangittu kauheasta
rikoksesta miltei samalla hetkellä, kun hänestä oli tullut tämän
morsian, huolimatta senjälkeen seuranneesta sairaudesta ja
uhkaavasta oikeuden tuomiosta, joka tuskin oli vältettävissä,
Grušenjka ei kuitenkaan ollut menettänyt entistä iloisuuttaan. Hänen
ennen ylpeistä silmistään loisti nyt jonkinlainen hiljaisuus, vaikka…
vaikka muuten nämä silmät vieläkin toisinaan liekehtivät pahaa
ennustavasta, kun hänen sydäntään ahdisti eräs entinen huoli, joka
ei ensinkään ollut tukahtunut, vaan vieläpä kasvanutkin. Tämän
huolen esine oli yhä sama: Katerina Ivanovna, jota Grušenjka
sairastaessaan oli muistellut houreissaankin. Aljoša ymmärsi, että
hän oli tälle hirveän mustasukkainen Mitjan tähden, vangin tähden,
siitä huolimatta, että Katerina Ivanovna ei ollut kertaakaan käynyt
tätä tervehtimässä vankilassa, vaikka olisi voinut tehdä sen milloin
hyvänsä. Kaikesta tästä muodostui Aljošalle eräänlainen vaikea
tehtävä, sillä Grušenjka uskoi vain hänelle sydämensä salaisuudet ja
pyysi alati häneltä neuvoja; hän puolestaan ei toisinaan kyennyt
sanomaan Grušenjkalle kerrassaan mitään.

Huolestuneena hän saapui Grušenjkan asuntoon. Tämä oli jo


kotona; noin puoli tuntia sitten hän oli palannut Mitjan luota, ja jo siitä
nopeasta liikkeestä, jolla Grušenjka hypähti nojatuolista pöydän
äärestä häntä vastaan, hän päätti, että tämä oli odottanut häntä
hyvin kärsimättömästi. Pöydällä oli levällään kortteja, ja ne oli jaettu
niinkuin turakkapeliä varten. Nahkasohvalle toiselle puolelle oli
laitettu vuode, ja siinä loikoi puoleksi istuen viitta yllään ja
pumpulikankainen yölakki päässä Maksimov, joka ilmeisesti oli
sairas ja heikko, vaikka hymyilikin imelästi. Tämä koditon ukko oli
silloin, jo kaksi kuukautta sitten, palannut Mokrojesta yhdessä
Grušenjkan kanssa ja siitä lähtien jäänytkin hänen luokseen
olemaan. Tultuaan silloin Grušenjkan kanssa räntäsateessa hän oli
läpimärkä ja pelästyneenä istuutunut sohvaan ja luonut ääneti
silmänsä häneen hymyillen arasti, ja rukoilevasti. Grušenjka, joka oli
hyvin murheissaan ja jo alkavan kuumeen vallassa ja oli miltei
unohtanut hänet ensimmäisen puolen tunnin aikana puuhaillessaan
kaikenlaista tulonsa jälkeen, — oli äkkiä luonut häneen kiinteän
katseen: Maksimov oli surkeasti ja hämillään silloin nauraa hihittänyt
katsoen häntä silmiin. Grušenjka oli kutsunut Fenjan ja käskenyt tätä
antamaan Maksimoville ruokaa. Koko sen päivän oli ukko istunut
paikallaan melkein liikahtamatta; kun sitten ilta pimeni ja
ikkunaluukut pantiin kiinni, oli Fenja kysynyt rouvalta:

— Miten on, rouva, jääkö hän sitten tänne yöksi?

— Niin, laita hänelle vuode sohvalle, oli Grušenjka vastannut.

Tarkemmin kyseltyään oli Grušenjka saanut selville, että


Maksimovilla nyt todellakaan ei ollut mitään paikkaa, mihin menisi, ja
että »herra Kalganov, hyväntekijäni, ilmoittivat minulle suoraan,
etteivät enää huoli minua luokseen, ja lahjoittivat viisi ruplaa». —
»No, Jumala kanssasi, jää sitten tänne», päätti Grušenjka
suruissaan ja hymähti hänelle osaaottavasti. Ukkoa liikutti hänen
hymynsä, ja mies-paran huulet alkoivat väristä hellämielisestä
itkusta. Siitä saakka oli sitten kuljeskeleva elätti ollutkin Grušenjkan
luona. Tämän sairastaessakaan hän ei ollut lähtenyt talosta. Fenja ja
tämän äiti, Grušenjkan keittäjätär, eivät ajaneet häntä pois, vaan
syöttivät häntä edelleen ja laittoivat hänelle vuoteen sohvalle.
Myöhemmin Grušenjka tottui häneen niin, että tullessaan Mitjan
luota (jota hän tuskin tervehdyttyään oli heti alkanut käydä
katsomassa) hän suruaan haihduttaakseen istuutui ja alkoi puhella
»Maksimuškan» kanssa kaikenlaisista joutavista asioista, ettei vain
ajattelisi suruaan. Osoittautui, että ukko osasi toisinaan kertoakin
yhtä ja toista, niin että hän lopulta oli suorastaan välttämätön
Grušenjkalle. Paitsi Aljošaa, joka ei kuitenkaan käynyt joka päivä ja
aina viipyi vain lyhyen ajan, ei Grušenjka ottanut vastaan juuri
ketään. Hänen ukkonsa taasen, kauppias, oli tähän aikaan hyvin
sairas, »teki lähtöä», kuten kaupungilla sanottiin, ja kuolikin vain
viikko sen jälkeen kuin Mitja oli tuomittu. Kolme viikkoa ennen
kuolemaansa, tuntien lopun lähenevän, hän vihdoin kutsui luokseen
ylös poikansa vaimoineen ja lapsineen ja käski näitä pysymään
luonaan. Palvelijoitaan hän tästä hetkestä lähtien kielsi ankarasti
ensinkään vastaanottamasta Grušenjkaa, ja jos tämä tulisi,
sanomaan hänelle: »Käskee teitä elämään kauan iloisesti ja
kokonaan unohtamaan heidät.» Grušenjka lähetti kuitenkin melkein
joka päivä tiedustelemaan hänen terveydentilaansa.

— Viimeinkin tulit! — huudahti hän heittäen pois kortit ja tervehtien


iloisesti Aljošaa. — Maksimuška jo kovin peloitteli, että sinä kukaties
et tulekaan. Ah, kuinka sinua tarvitaan! Istuudu pöydän ääreen; no,
saako olla kahvia?

— Ehkäpä, — sanoi Aljoša istuutuen pöydän luo, — olen hyvin


nälissäni.

— Siinäpä se; Fenja, Fenja, kahvia! — huudahti Grušenjka. — Se


on jo kauan ollut kiehumassa, odottaa sinua, ja tuo piirakoltakin,
mutta kuumia. Ei, odotahan, Aljoša, näitten piirakoitten johdosta
syntyi tänään myrsky. Minä vein niitä hänelle vankilaan, mutta hän,
uskotko, heitti ne minulle takaisin eikä syönyt. Yhden piirakan hän
suorastaan paiskasi lattiaan ja polki sitä jaloillaan. Minä sanoin:
»Jätän ne vartijalle; jos et syö niitä iltaan mennessä, niin silloin sinua
tietysti elättää ilkeämielinen viha!» ja niin lähdin matkaani. Taaskin
siis riitaannuimme, uskotko sitä. Joka kerta, kun menen sinne, me
riitaannumme.
Grušenjka sanoi tämän kaiken henkeään vetämättä, kiihdyksissä.
Maksimov hätääntyi heti, hymyili ja painoi silmänsä alas.

— Mistä te tällä kertaa riitaannuitte? — kysyi Aljoša.

— Minulle aivan odottamattomasta asiasta! Ajattelehan, hän on


alkanut olla mustasukkainen »entiselle»: »Miksi, mukamas, sinä
ylläpidät häntä? Sinä olet siis alkanut ylläpitää häntä?» On kaiken
aikaa mustasukkainen, aina vain mustasukkainen puolestani! Hän
on sekä nukkuessaan että syödessään mustasukkainen. Kerran
viime viikolla oli jo mustasukkainen Kuzjmallekin.

— Hänhän tiesi, miten ovat »entisen» asiat?

— Siinäpä se onkin. Aivan alusta asti ihan tähän päivään saakka


hän on tietänyt, mutta tänään yhtäkkiä nousi ja alkoi torua. Ihan
hävettää sanoakin, mitä hän puhui. Senkin hölmö! Rakitka tuli hänen
luokseen, kun minä lähdin pois. Kenties Rakitka häntä yllyttää, vai
mitä? Mitä luulet? — lisäsi hän hajamielisesti.

— Hän rakastaa sinua, siinäpä se juuri onkin, rakastaa suuresti.


Mutta nyt hän on samalla kiihdyksissä.

— Kuinka ei olisi kiihdyksissä, huomenna tuomitaan. Minä menin


sanoakseni hänelle sanani huomisen johdosta, sillä minun on,
Aljoša, kauheata ajatellakin, mitä huomenna tulee! Sinä sanot, että
hän on kiihdyksissä, mutta miten kiihdyksissä olenkaan minä. Ja hän
alkaa puhua puolalaisesta! Senkin hölmö! Pian aikaan hän tulee
vielä mustasukkaiseksi Maksimuškalle.

— Minun vaimoni on myös hyvin mustasukkainen minun tähteni,


— pisti sanasensa väliin Maksimov.
— No, sinun tähtesi, — alkoi Grušenjka tahtomattaan nauraa, —
kenelle voisi olla sinun takiasi mustasukkainen?

— Palvelustytöille.

— Ah, ole vaiti, Maksimuška, ei minua nyt naurata, ihan vihaksi


pistää. Älä vilkuile piirakkoihin, minä en anna niitä, ne ovat sinulle
epäterveelliset, enkä anna myöskään palsamia. Tuonkin kanssa
tässä pitää rehkiä; aivan kuin minulla täällä olisi jonkinmoinen
vaivaistalo, totta tosiaan, — alkoi hän nauraa.

— Minä en ole teidän hyvien töittenne arvoinen, minä olen


mitätön, — lausui itkunsekaisella äänellä Maksimov. — Kohdistaisitte
hyväntekeväisyytenne mieluummin niihin, jotka ovat tarpeellisempia
kuin minä.

— Oh, jokainen on tarpeellinen, Maksimuška, ja mistä sen tietää,


kuka on tarpeellisempi kuin toinen. Kunpa ei tuota puolalaista olisi
ollutkaan. Aljoša, hänkin on tänään sairastunut. Olin hänenkin
luonaan. Nyt lähetän hänelle aivan tahallani piirakoita, minä en
lähettänyt, mutta Mitja syytti minua siitä, että muka lähetän, niinpä
nyt uhallakin lähetän, ihan uhalla! Ah, tuossahan on Fenjakin ja tuo
kirjeen! No, niin onkin, taas puolalaisilta, taas pyytävät rahaa!

Herra Mussjalovitš oli todellakin lähettänyt sangen pitkän ja


tapansa mukaan kaunosanaisen kirjeen, jossa pyysi saada lainaksi
kolme ruplaa. Kirjeeseen oli liitetty kuitti, jossa tunnustettiin
rahamäärä saaduksi ja sitouduttiin maksamaan se takaisin kolmen
kuukauden kuluessa; kuitin alle oli kirjoittanut nimensä myös herra
Vrublevski. Tämmöisiä kirjeitä ja tämmöisiä kuitteja oli Grušenjka
saanut »entiseltään» jo monta. Niitten tulo oli alkanut silloin, kun
Grušenjka pari viikkoa sitten oli tullut terveeksi. Hän tiesi myös, että
molemmat herrat olivat hänen sairautensakin aikana käyneet
tiedustamassa hänen vointiaan. Ensimmäinen kirje, jonka Grušenjka
sai, oli pitkä ja isokokoiselle kirjepaperille kirjoitettu, suurella perheen
sinetillä suljettu ja hirveän hämärä ja korusanainen, niin että
Grušenjka luki sen vain puoliväliin ja jätti siihen, koska ei ymmärtänyt
siitä mitään. Eikä hänellä silloin ollut aikaa ajatella kirjeitä. Tätä
ensimmäistä kirjettä seurasi seuraavana päivänä toinen, jossa herra
Mussjalovitš pyysi häneltä lainaksi kaksituhatta ruplaa hyvin lyhyeksi
ajaksi. Grušenjka jätti tämänkin kirjeen vastaamatta. Sen jälkeen
seurasi kokonainen sarja kirjeitä, kirje päivässä, kaikki yhtä juhlallisia
ja kaunopuheisia, mutta lainaksi pyydetty summa niissä yhä pieneni,
aleni sataan ruplaan, kahteenkymmeneenviiteen, kymmeneen
ruplaan, ja lopulta Grušenjka yhtäkkiä sai kirjeen, jossa molemmat
herrat pyysivät häneltä ainoastaan yhden ruplan ja liittivät mukaan
kuitin, jonka molemmat olivat allekirjoittaneet. Silloin oli Grušenjkaa
yhtäkkiä alkanut säälittää, ja hän pistäytyi hämärissä itse herrain
luona. Hän tapasi molemmat puolalaiset hirveässä köyhyydessä,
melkein kurjuudessa, ilman ruokaa, ilman puita, ilman savukkeita,
velassa emännälle. Mitjalta Mokrojessa voitetut kaksisataa ruplaa
olivat nopeasti hävinneet jonnekin. Grušenjkaa hämmästytti
kuitenkin, että molemmat herrat ottivat hänet vastaan ylpeän
arvokkaasti ja niinkuin riippumattomat miehet, kaikkia muotoja
noudattaen ja komein puhein. Grušenjka vain nauroi ja antoi
»entiselleen» kymmenen ruplaa. Silloin hän nauraen kertoi tästä
Mitjalle, eikä tämä ensinkään ollut mustasukkainen. Mutta tästä
lähtien herrat takertuivat Grušenjkaan ja pommittivat häntä joka
päivä kirjeillä, joissa pyysivät rahaa, ja tämä lähetti joka kerta
pikkuisen, mutta nytpä tänään Mitja yhtäkkiä sai päähänsä tulla
hirveän mustasukkaiseksi.
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.

Let us accompany you on the journey of exploring knowledge and


personal growth!

textbookfull.com

You might also like